Подчеркивание (_) в Python
Ниже приведены разные места, где _ используется в Python:
Single Underscore:
Double Underscore:
В интерпретаторе:
_ возвращает значение последнего выполненного выражения в Python REPL ]
>>> a = 10
>>> b = 10
>>> _
Traceback (most recent call last):
File "", line 1, in
NameError: name '_' is not defined
>>> a+b
20
>>> _
20
>>> _ * 2
40
>>> _
40
>>> _ / 2
20
Для игнорирования значений:
Несколько раз мы не хотим, чтобы возвращаемые значения в это время присваивали эти значения wnderscore. Он использовался как переменная throwaway.
# Ignore a value of specific location/index
for _ in rang(10)
print "Test"
# Ignore a value when unpacking
a,b,_,_ = my_method(var1)
После имени
Python имеет свои ключевые слова по умолчанию, которые мы не можем использовать в качестве имени переменной. Чтобы избежать такого конфликта между ключевыми словами и переменной python, мы используем символ подчеркивания после имени
Пример:
>>> class MyClass():
... def __init__(self):
... print "OWK"
>>> def my_defination(var1 = 1, class_ = MyClass):
... print var1
... print class_
>>> my_defination()
1
__main__.MyClass
>>>
Перед именем
Ведущее подчеркивание перед переменной / функцией / имя метода указывает программисту, что оно предназначено только для внутреннего использования, которое может быть изменено всякий раз, когда требуется класс.
Здесь префикс имени by underscore рассматривается как непубличный. Если указать из Import *, все имя начинается с _, то не будет импортироваться.
Python не указывает действительно закрытый, так что это могут быть вызовы непосредственно из других модулей, если они указаны во всех, Мы также называем это слабым Частный
class Prefix:
... def __init__(self):
... self.public = 10
... self._private = 12
>>> test = Prefix()
>>> test.public
10
>>> test._private
12
Python class_file.py
def public_api():
print "public api"
def _private_api():
print "private api"
Вызов файла из REPL
>>> from class_file import *
>>> public_api()
public api
>>> _private_api()
Traceback (most recent call last):
File "", line 1, in
NameError: name '_private_api' is not defined
>>> import class_file
>>> class_file.public_api()
public api
>>> class_file._private_api()
private api
Double Underscore(__)
__ leading_double_underscore
Ведущий двойной подчеркивание говорит интерпретатору python, чтобы переписать имя, чтобы избежать конфликта в подклассе. Интерпретатор изменяет имя переменной с расширением класса и эту функцию, известную как Mangling. testFile.py
class Myclass():
def __init__(self):
self.__variable = 10
Вызов из REPL
>>> import testFile
>>> obj = testFile.Myclass()
>>> obj.__variable
Traceback (most recent call last):
File "", line 1, in
AttributeError: Myclass instance has no attribute '__variable'
nce has no attribute 'Myclass'
>>> obj._Myclass__variable
10
В Mangling интерпретатор python измените имя переменной на ___. Таким образом, множественное время используется как частный член, потому что другой класс не может напрямую обращаться к этой переменной. Основной целью __ является использование переменной / метода только в классе. Если вы хотите использовать его вне класса, вы можете сделать общедоступным api
class Myclass():
def __init__(self):
self.__variable = 10
def func(self)
print self.__variable
Вызов из REPL
>>> import testFile
>>> obj = testFile.Myclass()
>>> obj.func()
10
__ BEFORE_AFTER __
Имя с началом с __ и заканчивается тем же, что и специальные методы в Python. Python предоставляет эти методы для использования в качестве перегрузки оператора в зависимости от пользователя.
Python предоставляет это соглашение для различения определяемой пользователем функции с функцией модуля
class Myclass():
def __add__(self,a,b):
print a*b
. Вызов из REPL
>>> import testFile
>>> obj = testFile.Myclass()
>>> obj.__add__(1,2)
2
>>> obj.__add__(5,2)
10
Значением по умолчанию для атрибута type
элементов button
является "submit".
<button type=button>Submit</button>
Честно говоря, мне нравятся другие ответы. Легко и не нужно входить в JS. Но я заметил, что вы спрашивали о jQuery. Итак, для полноты, в jQuery, если вы вернете false с обработчиком .click (), это будет отрицать действие виджета по умолчанию.
См. Здесь пример (и больше лакомства тоже). Вот также документация .
в двух словах с вашим примером кода:
<script type="text/javascript">
$('button[type!=submit]').click(function(){
// code to cancel changes
return false;
});
</script>
<a href="index.html"><button>Cancel changes</button></a>
<button type="submit">Submit</button>
. В качестве дополнительной выгоды, вы можете избавиться от метки привязки и просто использовать кнопку.
e.preventDefault()
не делает ничего, чтобы остановить подачу (где он начинается с function(e)
).
– Sablefoste
6 September 2017 в 17:47
<form class="form-horizontal" method="post">
<div class="control-group">
<input type="text" name="subject_code" id="inputEmail" placeholder="Subject Code">
</div>
<div class="control-group">
<input type="text" class="span8" name="title" id="inputPassword" placeholder="Subject Title" required>
</div>
<div class="control-group">
<input type="text" class="span1" name="unit" id="inputPassword" required>
</div>
<div class="control-group">
<label class="control-label" for="inputPassword">Semester</label>
<div class="controls">
<select name="semester">
<option></option>
<option>1st</option>
<option>2nd</option>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputPassword">Deskripsi</label>
<div class="controls">
<textarea name="description" id="ckeditor_full"></textarea>
<script>CKEDITOR.replace('ckeditor_full');</script>
</div>
</div>
<div class="control-group">
<div class="controls">
<button name="save" type="submit" class="btn btn-info"><i class="icon-save"></i> Simpan</button>
</div>
</div>
</form>
<?php
if (isset($_POST['save'])){
$subject_code = $_POST['subject_code'];
$title = $_POST['title'];
$unit = $_POST['unit'];
$description = $_POST['description'];
$semester = $_POST['semester'];
$query = mysql_query("select * from subject where subject_code = '$subject_code' ")or die(mysql_error());
$count = mysql_num_rows($query);
if ($count > 0){ ?>
<script>
alert('Data Sudah Ada');
</script>
<?php
}else{
mysql_query("insert into subject (subject_code,subject_title,description,unit,semester) values('$subject_code','$title','$description','$unit','$semester')")or die(mysql_error());
mysql_query("insert into activity_log (date,username,action) values(NOW(),'$user_username','Add Subject $subject_code')")or die(mysql_error());
?>
<script>
window.location = "subjects.php";
</script>
<?php
}
}
?>
Без установки атрибута type
вы также можете вернуть false
из вашего обработчика OnClick
и объявить атрибут onclick
как onclick="return onBtnClick(event)"
.
Просто используйте старый добрый HTML:
<input type="button" value="Submit" />
Оберните его как объект ссылки, если хотите:
<a href="http://somewhere.com"><input type="button" value="Submit" /></a>
Или если вы решите, что хотите javascript для обеспечения некоторых других функций:
<input type="button" value="Cancel" onclick="javascript: someFunctionThatCouldIncludeRedirect();"/>
<input type="button" />
– Jeffrey Blake
23 July 2010 в 04:01
Button
- контейнер в HTML. Это позволяет размещать такие вещи, как изображения или таблицы (не уверен, почему вы это сделаете, но можете) и т. Д., В то время как input
не поддерживает это. Существует разница между ними, и каждый из них имеет свой подходящий вариант использования.
– R0MANARMY
23 July 2010 в 15:06
button
является значением по умолчаниюtype
... – CMS 23 July 2010 в 05:09type="button"
с цитатой? Это то же самое? – Rafnuss 9 December 2016 в 12:41