匿名函式
type函式
閉包任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數
函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明
函式內容以冒號起始,並且縮排
return [表示式] 結束函式,選擇性地返回乙個值給呼叫方。不帶表示式的return相當於返回 none
函式體
>>
>
defhello() :
print("hello world!"
)>>
> hello()
hello world!
可變型別:變數賦值 la=[1,2,3,4] 後再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。
可變型別:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響
關鍵字引數
預設引數
不定長引數
defprintinfo( name, age ):
"列印任何傳入的字串"
print ("名字: "
, name);
print ("年齡: "
, age);
return
;#呼叫printinfo函式
printinfo( age
=50, name
="runoob"
);def
printinfo( name, age
=35 ):
"列印任何傳入的字串"
print ("名字: "
, name);
print ("年齡: "
, age);
return
;#呼叫printinfo函式
printinfo( age
=50, name
="runoob"
);print ("------------------------"
)printinfo( name
="runoob"
);def
printinfo( arg1, *
vartuple ):
"列印任何傳入的引數"
print ("輸出: "
) print (arg1)
for var in vartuple:
print (var)
return
;# 呼叫printinfo 函式
printinfo( 10 );
printinfo( 70, 60, 50 );
e (enclosing) 閉包函式外的函式中
g (global) 全域性作用域
b (built-in) 內建作用域 以 l –> e –> g –>b 的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。
int(2.9) # 內建作用域
g_count =
0# 全域性作用域
defouter():
o_count =
1# 閉包函式外的函式中
definner():
i_count =
2# 區域性作用域
1def
fun1():
global num # 需要使用 global 關鍵字宣告
print(num)
num =
123print(num)
fun1()
outer():
num =
10def
inner():
nonlocal num # nonlocal關鍵字宣告
num =
100print(num)
inner()
print(num)
outer()
lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。
lambda 函式擁有自己的命名空間,且不能訪問自己引數列表之外或全域性命名空間裡的引數。
sum=
lambda
arg1, arg2: arg1 + arg2;
# 呼叫sum函式
print ("相加後的值為 : "
, sum( 10, 20 ))
print ("相加後的值為 : "
, sum( 20, 20 ))
type() 不會認為子類是一種父類型別,不考慮繼承關係。
isinstance() 會認為子類是一種父類型別,考慮繼承關係。
如果要判斷兩個型別是否相同推薦使用 isinstance()。
type(name, bases, dict)
bases -- 基類的元組。
dict -- 字典,類內定義的命名空間變數。
>>
>
type(1)
<
type
'int'
>
>>
>
type('runoob'
)<
type
'str'
>
>>
>
type([2])
<
type
'list'
>
>>
>
type()
<
type
'dict'
>
>>
> x =
1>>
>
type( x ) ==
int# 判斷型別是否相等
true
# 三個引數
>>
>
class
x(object):
... a =
1...
>>
> x =
type('x'
, (object,), dict(a
=1)) # 產生乙個新的型別 x
>>
> x
<
class
'__main__.x'
>
a: pass
class
b(a):
pass
isinstance(a(), a) # returns true
type(a()) == a # returns true
isinstance(b(), a) # returns true
type(b()) == a # returns false
內嵌函式必須引用乙個定義在閉合範圍內(外部函式裡)的變數——內部函式引用外部變數
外部函式必須返回內嵌函式——必須返回那個內部函式
funx():
x=5def
funy():
nonlocal x
x+=1return x
return funy
> a=funx()
>>
> a()
6>>
> a()
7>>
> a()
8>>
> a()
9>>
> x
traceback (most recent call last):
file "
", line 1, in
xnameerror: name 'x'
isnot defined
>>
>
但是最後的錯誤說明x並不是乙個全域性變數。其
實這就是閉包的乙個十分淺顯的作用,形成閉包之後,閉包變數能夠隨著閉包函式的呼叫而實時更新,就好像是乙個全域性變數那樣。
> a.__closure__
(object at 0x00000000667d02d0
>,)
>>
>
type(a.__closure__)
<
class
'tuple'
>
>>
>
type(a.__closure__[0])
<
class
'cell'
>
>>
> a.__closure__[0].cell_contents
9>>
> a()
10>>
> a.__closure__[0].cell_contents
10>>
>
deftest():pass
>>
> test.__closure__==
none
true
>>
>
元組裡面的物件為cell物件,而訪問cell物件的cell_contents屬性則可以得到閉包變數的當前值(即上一次呼叫之後的值)。
而隨著閉包的繼續呼叫,變數會再次更新。
所以可見,一旦形成閉包之後,python確實會將__closure__和閉包函式繫結作為儲存閉包變數的場所。
python3函式語法 Python3
python3 degrees 函式 描述degrees 將弧度轉換為角度。語法以下是 degrees 方法的語法 import math math.degrees x 注意 degrees 是不能直接訪問的,需要匯入 math 模組,然後通過 math 靜態物件呼叫該方法。引數x 乙個數值。返回值...
python3基礎語法 對String基本操作
1.拼接 包含字串拼接數字 1 使用 作為字串的拼接運算子 2 字串與數字進行拼接時,需要將數字轉換成字串 使用 str 或 repr 函式 str1 這是 str2 funny p 99.8 print str1 str2 結果為 這是 funny print str1 str p 使用str 將...
Python3基礎系列 基本入門語法
本文簡單地介紹了python的一些基本入門知識,通過對這些知識的了解,大家可以寫一些簡單的 同時也為後面深入理解打下基礎。本文的主要內容如下 值 即value,通常有 1,2,3.1415,bright rose 型別 不同的值有不同的型別。值型別 1int型 整型 bright str字串型 3....