1、定義函數(shù)
成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計,南明網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:南明等地區(qū)。南明做網(wǎng)站價格咨詢:18982081108
函數(shù)是可重用的程序。本書中已經(jīng)使用了許多內(nèi)建函數(shù),如len()函數(shù)和range()函數(shù),但是還沒自定義過函數(shù)。定義函數(shù)的語法格式如下:
def 函數(shù)名(參數(shù)):
函數(shù)體
定義函數(shù)的規(guī)則如下:
①關(guān)鍵字def用來定義一個函數(shù),它是define的縮寫。
②函數(shù)名是函數(shù)的唯一標(biāo)識,函數(shù)名的命名規(guī)則遵循標(biāo)識符的命名規(guī)則。
③函數(shù)名后面一定要緊跟著一個括號,括號內(nèi)的參數(shù)是可選的,括號后面要有冒號。
④函數(shù)體(statement)為一個或一組Python語句,注意要有縮進。
⑤函數(shù)體的第一行可以有文檔字符串,用于描述函數(shù)的功能,用三引號括起來。
按照定義規(guī)則,可以定義第一個函數(shù)了:
def?hello_world():
...?????print('Hello,world!')???#?注意函數(shù)體要有縮進
...
hello_world()
Hello,world!
這個函數(shù)不帶任何參數(shù),它的功能是打印出“Hello,world!”。最后一行代碼hello_world()是調(diào)用函數(shù),即讓Python執(zhí)行函數(shù)的代碼。
2、全局變量和局部變量
全局變量是定義在所有函數(shù)外的變量。例如,定義一個全局變量a,分別在函數(shù)test1()和test2()使用變量a:
a?=?100???#?全局變量
def?test1():
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
test2()
100
定義了全局變量a之后,在函數(shù)test1()和test2()內(nèi)都可以使用變量a,由此可知,全局變量的作用范圍是全局。
局部變量是在函數(shù)內(nèi)定義的變量,除了用關(guān)鍵字global修飾的變量以外。例如,在函數(shù)test1()內(nèi)定義一個局部變量a,分別在函數(shù)外和另一個函數(shù)test2()內(nèi)使用變量a:
def?test1():
...?????a?=?100???#?局部變量
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
print(a)
Traceback?(most?recent?call?last):
File?"stdin",?line?1,?in?module
NameError:?name?'a'?is?not?defined
test2()
Traceback?(most?recent?call?last):
File?"stdin",?line?1,?in?module
File?"stdin",?line?2,?in?test2
NameError:?name?'a'?is?not?defined
Python解釋器提示出錯了。由于局部變量a定義在函數(shù)test1()內(nèi),因此,在函數(shù)test1()內(nèi)可以使用變量a,但是在函數(shù)外或者另一個函數(shù)test2()內(nèi)使用變量a,都會報錯,由此可見,局部變量的作用范圍是定義它的函數(shù)內(nèi)部。
一般情況下,在函數(shù)內(nèi)聲明的變量都是局部變量,但是采用關(guān)鍵字global修飾的變量卻是全局變量:
def?test1():
...?????global?a???#?全局變量
...?????a?=?100
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
print(a)
100
test2()
100
這個程序與上個程序相比,只是在函數(shù)test1()中多了一行代碼“global a”,程序便可以正確運行了。在函數(shù)test1()中,采用關(guān)鍵字global修飾了變量a之后,變量a就變成了全局變量,不僅可以在該函數(shù)內(nèi)使用,還可以在函數(shù)外或者其他函數(shù)內(nèi)使用。
如果在某個函數(shù)內(nèi)局部變量與全局變量同名,那么在該函數(shù)中局部變量會覆蓋全局變量:
a?=?100???#?全局變量
def?test1():
...?????a?=?200???#?同名局部變量
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
200
test2()
100
由于在函數(shù)test1()中定義了一個與全局變量同名的局部變量a,因此,在函數(shù)test1()中全局變量a的值被局部變量覆蓋了,但是在函數(shù)test2()中全局變量a的值沒有被覆蓋。
綜上所述,在Python中,全局變量保存的數(shù)據(jù)供整個腳本文件使用;而局部變量只用于臨時保存數(shù)據(jù),變量僅供局部代碼塊使用。
簡單來說,python中的is與is not運算符可判斷兩個對象是否為同一對象。
若為同一個對象,則對象1 is 對象2為True 。
反正,若非同一個對象,則對象1 is not 對象2為True
要理解Python中的is和is not運算符,首先需要知道Python中對象包含的三個基本要素,分別是:id(身份標(biāo)識)、python type()(數(shù)據(jù)類型)和value(值)。
is和==(is not和!=)都是對對象進行比較判斷作用的。
但對對象比較判斷的內(nèi)容并不相同。
拿is和==為例,
==是python標(biāo)準(zhǔn)操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等,例如下面兩個字符串間的比較:
a = 'iplaypython.com'
b = 'iplaypython.com'
a == b
True
is也被叫做同一性運算符,這個運算符比較判斷的是對象間的唯一身份標(biāo)識,也就是id是否相同。通過對下面幾個列表間的比較,你就會明白is同一性運算符的工作原理:
x = y = [4,5,6]
z = [4,5,6]
x == y
True
x == z
True
x is y
True
x is z
False
print id(x)
3075326572
print id(y)
3075326572
print id(z)
3075328140
可看出前三個例子都是True,而最后一個是False。
x、y和z的值是相同的,所以前兩個是True沒有問題。
至于最后一個為什么是False,看看三個對象的id分別是什么就會明白了。
==比較操作符:用來比較兩個對象是否相等,value做為判斷因素;
is同一性運算符:比較判斷兩個對象是否相同,id做為判斷因素。
同理,
!=比較操作符:用來比較兩個對象是否不等,value做為判斷因素;
is not同一性運算符:比較判斷兩個對象是否不同,id做為判斷因素。
python中的if not的用法說明如下:
1、if的語法為:if 條件為真:執(zhí)行語句,而not是取反的意思。
2、從上面的解釋可理解為:if not 條件為真:執(zhí)行語句==if 條件不為真:執(zhí)行語句。
3、舉例:if n3:print "True",假如n=3,就打印“True”。如果加上not,即為if not n3:print “True”,就有:n=3,才會打印“True"。
擴展資料:
python中的“if not 1”:
if條件語句后面需要跟隨bool類型的數(shù)據(jù),即True或者False。然而,如果不是bool類型的數(shù)據(jù),可以將其轉(zhuǎn)換成bool類型的數(shù)據(jù),轉(zhuǎn)換的過程是隱式的。
在Python中,None、空列表[]、空字典{}、空元組()、0等一系列代表空和無的對象會被轉(zhuǎn)換成False。除此之外的其它對象都會被轉(zhuǎn)化成True。
在命令“if not 1”中,1便會轉(zhuǎn)換為bool類型的True。not是邏輯運算符非,not 1則恒為False。因此if語句if not 1之下的語句,永遠不會執(zhí)行。
大家講的都差不多
1. if 語句用來檢驗一個條件, 如果 條件為真,我們運行一塊語句(稱為 if-塊 ), 否則 我們處理
另外一塊語句(稱為 else-塊 )。 else 從句是可選的。---python簡明教程
2.test() 真 not test()假 , if not test() 不執(zhí)行
test()假 not test()真 ,此時 if not test()后面的就可以被執(zhí)行了
函數(shù)等價于
def _not_divisible(n):
def _inner(x):
return x * n
return _inner
f = _not_divisible(5)中f返回的是一個函數(shù)
def _inner(x):
return x * 5
所以需要運行這個函數(shù)f(3) -- 3*5 =15