Python 函數(shù)定義以及參數(shù)傳遞
公司主營業(yè)務(wù):做網(wǎng)站、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出漳浦免費做網(wǎng)站回饋大家。
1.函數(shù)定義
#形如def func(args...):
doSomething123
以關(guān)鍵字def 開頭,后面是函數(shù)名和參數(shù)下面是函數(shù)處理過程。
舉例:
def add( a, b ):
return a+b12
參數(shù)可以設(shè)定默認值,如:
def add( a, b=10 ): #注意:默認值參數(shù)只會運算一次
return a+b12
默認值參數(shù)只會運算一次是什么意思?
def func( a, b=[] ): #b的默認值指向一個空的列表,每次不帶默認值都會指向這塊內(nèi)存
b.append(a) return b
print(func(1))#向默認的空列表里加入元素1 ,默認列表里已經(jīng)是[1]print(func(2))#向默認的列表里加入元素2,默認列表里已經(jīng)是[1,2]print(func(3,[]))#向b指向的空列表里加入元素1 ,默認列表里還是[1,2]print(func(4))#向默認的列表里加入元素4,默認列表里已經(jīng)是[1,2,4]'''
結(jié)果:
[1]
[1, 2]
[3]
[1, 2, 4]
'''12345678910111213141516
這下明白為什么默認參數(shù)只計算一次了吧,函數(shù)參數(shù)不傳遞時默認值總是指向固定的內(nèi)存空間,就是第一次計算的空間。
2.參數(shù)傳遞
def func(a, b):
print('a=%d, b=%d' % (a,b) )12
在使用函數(shù)時可以如下方式,結(jié)果都是相同的
func(10,20) #不使用參數(shù)名,需要按參數(shù)順序傳遞func(a=10,b=20) #使用參數(shù)名可以不按順序傳遞func(b=20,a=10)#結(jié)果:a=10, b=20a=10, b=20a=10, b=201234567
如果函數(shù)定義形式如下方式:
def func(*args): #這種定義會把傳遞的參數(shù)包成元組
print(args,type(args))
func(10,20)#結(jié)果:#(10, 20) class 'tuple'1234567
舉一個和上述過程相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
a = (10, 20)
func(*a) #在調(diào)用函數(shù)使用`*`則會把元組解包成單個變量按順序傳入函數(shù)#結(jié)果:a=10, b=20123456
總結(jié):*號在定義函數(shù)參數(shù)時,傳入函數(shù)的參數(shù)會轉(zhuǎn)換成元組,如果 *號在調(diào)用時則會把元組解包成單個元素。
另一種定義:
def func(**kw):#使用**定義參數(shù)會把傳入?yún)?shù)包裝成字典dict
print(kw, type(kw) )
func(a=10,b=20)#這種函數(shù)在使用時必須指定參數(shù)值,使用key=value這種形式#結(jié)果:{'b': 20, 'a': 10} class 'dict'12345
相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
d = {'a':10, 'b':20 }
func(**d) #在調(diào)用時使用**會把字典解包成變量傳入函數(shù)。12345
def func(*args, **kw):#這種形式的定義代表可以接受任意類型的參數(shù)
print(args,kw )12
總結(jié):**號在定義函數(shù)參數(shù)時,傳入函數(shù)的參數(shù)會轉(zhuǎn)換成字典,如果 **號在調(diào)用時則會把字典解包成單個元素。
lambda表達式
lambda表達式就是一種簡單的函數(shù)
形如 f = lambda 參數(shù)1,參數(shù)2: 返回的計算值
例如:
add = lambda x,y: x+y
print(add(1,2))'''
結(jié)果:3
'''12345
在前面已經(jīng)多次提到函數(shù)這個概念,之所以沒有解釋什么是函數(shù),是因為程序中的函數(shù)和數(shù)學(xué)中的函數(shù)差不多,如input()、range()等都是函數(shù),這些都是Python的標(biāo)準(zhǔn)函數(shù),直接使用就可以了。根據(jù)需要,用戶也可以自定義函數(shù)。
12.1 函數(shù)
函數(shù)的結(jié)構(gòu):
def 函數(shù)名(參數(shù)):
函數(shù)體
return 返回值
例如:數(shù)學(xué)中的函數(shù)f(x)=2x+5在Python中可以定義如下:
def f(x):
y=2*x+5
return(y)
如果x取值為3,可以使用如下語句調(diào)用函數(shù):
f(3)
下面給出完整的程序代碼:
def f(x):
y=2*x+5
return(y)
res=f(3)
print(res)
運行結(jié)果:11
如上例中的x是函數(shù)f(x)的參數(shù),有時也被稱為形式參數(shù)(簡稱形參),在函數(shù)被調(diào)用時,x被具體的值3替換y就是函數(shù)的返回值,這個值3也被稱為實際參數(shù)(簡稱實參)。
上例中的y是函數(shù)f(x)的返回值。并不是所有的函數(shù)都有參數(shù)和返回值。如下面的函數(shù):
def func():
print('此為無參數(shù)傳遞、無返回值的函數(shù)')
func()
輸出結(jié)果:此為無參數(shù)傳遞、無返回值的函數(shù)
可以看出,該函數(shù)func()無參數(shù),故調(diào)用時不用賦給參數(shù)值。
函數(shù)也可以有多個參數(shù),如f(x,y)=x2+y2,可用Python語言定義如下:
def f(x,y):
z=x**2+y**2
return z
print(f(2,3)) #調(diào)用函數(shù)f(x,y)
輸出結(jié)果:13
也可以通過直接給參數(shù)列表中的參數(shù)賦值的方法,為參數(shù)添加默認值,如果用戶賦予參數(shù)值,則按照用戶賦值執(zhí)行,否則使用默認值。例如:
def f(x,y=3):
z=x**2+y**2
return z
若調(diào)用時參數(shù)列表為(2,1),即x賦值為2,y賦值為1:
print(f(2,1))
輸出結(jié)果為:5
若調(diào)用時參數(shù)列表為(2),即x賦值為2,y賦值省缺,則y使用默認值:
print(f(2))
輸出結(jié)果為:13
回調(diào)函數(shù),又稱函數(shù)回調(diào),是將函數(shù)作為另一函數(shù)的參數(shù)。
例如:
def func(fun,m,n):
fun(m,n)
def f_add(m,n):
print('m+n=',m+n)
def f_mult(m,n):
print('m*n=',m*n)
func(f_add,2,3)
func(f_mult,2,3)
輸出結(jié)果:
m+n= 5
m*n= 6
在f_add(m,n)和f_mult(m,n)被定義前,func(fun,m,n)中的fun(m,n)就已經(jīng)調(diào)用了這兩個函數(shù),即“先調(diào)用后定義”,這也是回調(diào)函數(shù)的特點。
如果無法預(yù)知參數(shù)的個數(shù),可以在參數(shù)前面加上*號,這種參數(shù)實際上對應(yīng)元組類型。譬如,參會的人數(shù)事先不能確定,只能根據(jù)與會人員名單輸入:
def func(*names):
print('今天與會人員有:')
for name in names:
print(name)
func('張小兵','陳曉梅','李大海','王長江')
運行后,輸出結(jié)果為:
今天與會人員有:
張小兵
陳曉梅
李大海
王長江
參數(shù)為字典類型,需要在參數(shù)前面加上**號。
def func(**kwargs):
for i in kwargs:
print(i,kwargs[i])
func(a='a1',b='b1',c='c1')
輸出結(jié)果為:
a a1
b b1
c c1
一個有趣的實例:
def func(x,y,z,*args,**kwargs):
print(x,y,z)
print(args)
print(kwargs)
func('a','b','c','Python','is easy',py='python',j='java',ph='php')
輸出結(jié)果:
a b c # 前三個實參賦給前三個形參
('Python', 'is easy') # *args接收元組數(shù)據(jù)
{'py': 'python', 'j': 'java', 'ph': 'php'} # **kwargs接收字典數(shù)據(jù)
12.2 變量的作用域
變量的作用域即變量的有效范圍,可分為全局變量和局部變量。
局部變量
在函數(shù)中定義的變量就是局部變量,局部變量的作用域僅限于函數(shù)內(nèi)部使用。
全局變量
在主程序中定義的變量就是全局變量,但在函數(shù)中用關(guān)鍵字global修飾的變量也可以當(dāng)做全局變量來使用。
全局變量的作用域是整個程序,也就是說,全局變量可以在整個程序中可以訪問。
下面通過實例去討論:
程序1:
a=1 # a為全局變量
def a_add():
print('a的初值:',a) # 在函數(shù)中讀取a的值
a_add() # 調(diào)用函數(shù)a_add()
a+=1 # 主程序語句,a增加1
print('a現(xiàn)在的值是:',a) # 主程序語句,讀取a的值
運行結(jié)果:
a的初值: 1
a現(xiàn)在的值是: 2
這個結(jié)果和我們想象的一樣,全局變量a既可以在主程序中讀取,也可以在子程序(函數(shù))中讀取。
程序2:
a=1
def a_add():
a+=1
print('a的初值:',a)
a_add()
print('a現(xiàn)在的值是:',a)
運行程序1時出現(xiàn)如下錯誤提示:
UnboundLocalError: local variable 'a' referenced before assignment
意思是:局部變量'a'在賦值之前被引用。
從語法上來講,該程序沒有錯誤。首先定義了一個全局變量a并賦值為1,又定義了一個函數(shù)a_add(),函數(shù)內(nèi)的語句a+=1就是出錯的根源,雖然我們的初衷是想讓全局變量a的值增加1,但從錯誤提示看,這個語句中的a并不是全局變量,而是局部變量。看來,在函數(shù)中讀取全局變量的值是沒有問題的(在程序1中已經(jīng)得到了驗證),但要在函數(shù)中改變?nèi)肿兞康闹凳遣恍械模ㄔ诔绦?的錯誤提示a+=1中的a 是局部變量,而非全局變量)。
怎樣解決這個問題?
程序3:
a=1
def a_add(x):
x+=1
return x
print('a的初值:',a)
a=a_add(a)
print('a現(xiàn)在的值是:',a)
運行結(jié)果:
a的初值: 1
a現(xiàn)在的值是: 2
結(jié)果的確是正確的,但在函數(shù)a_add(x)中沒有調(diào)用變量a(沒有出現(xiàn)變量a)。
程序4:
a=1
def a_add(a):
a+=1
return a
print('a的初值:',a)
a=a_add(a)
print('a現(xiàn)在的值是:',a)
運行結(jié)果:
a的初值: 1
a現(xiàn)在的值是: 2
對比程序4和程序3不難發(fā)現(xiàn),其實程序4只是簡單的把函數(shù)的參數(shù)x變成了a,這個a的實質(zhì)和程序3中的x還是一樣的。這進一步證實,函數(shù)中的a是局部變量,與主程序的全局變量a有著本質(zhì)的區(qū)別。
程序5:
a=1
def a_add():
global a
a+=1
print('a的初值:',a)
a_add()
print('a現(xiàn)在的值是:',a)
運行結(jié)果:
a的初值: 1
a現(xiàn)在的值是: 2
程序5和程序2相比較,僅僅是在函數(shù)中添加了一個定義“global a”,此時的局部變量a就可以當(dāng)做全局變量使用,由于它和全局變量a同名,自然也就不用區(qū)分a究竟是全局變量還是局部變量了,在主程序和該函數(shù)內(nèi)都可以訪問、修改變量a的值了。
雖然使用global可使變量使用起來非常方便,但也容易引起混淆,故在使用過程中還是謹(jǐn)慎為好。
12.3 函數(shù)的遞歸與嵌套
遞歸,就是函數(shù)調(diào)用它自身。遞歸必須設(shè)置停止條件,否則函數(shù)將無法終止,形成死循環(huán)。
以計算階乘為例:
def func(n):
if n==1:
return 1
else:
return n*func(n-1) #func( )調(diào)用func( )
print(func(5))
運行結(jié)果為:120
嵌套,指在函數(shù)中調(diào)用另外的函數(shù)。這是程序中常見的一種結(jié)構(gòu),在此不再贅述。
匿名函數(shù)
Python中可以在參數(shù)前加上關(guān)鍵字lambda定義一個匿名函數(shù),這樣的函數(shù)一般都屬于“一次性”的。
例如:
程序1:這是一個常規(guī)的函數(shù)定義和調(diào)用。
def f_add(x,y):
return x+y
print(f_add(2,3))
輸出結(jié)果:5
程序2:使用lambda定義匿名函數(shù)。
f_add=lambda x,y:x+y
print(f_add(2,3))
輸出結(jié)果:5
從上面的代碼可以看出,使用lambda僅僅減少了一行代碼。f_add=lambda x,y:x+y中的f_add不是變量名,而是函數(shù)名。程序1和程序2的print( )語句中的參數(shù)都是一樣的——調(diào)用函數(shù)f_add( )。所以,匿名函數(shù)并沒有太多的優(yōu)點。
1、函數(shù)定義
①使用def關(guān)鍵字定義函數(shù)
②
def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):
"""文檔字符串,docstring,用來說明函數(shù)的作用"""
#函數(shù)體
return 表達式
注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。
③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構(gòu)成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質(zhì)與數(shù)學(xué)中的函數(shù)的本質(zhì)是一致的。
2、函數(shù)調(diào)用
①函數(shù)必須先定義,才能調(diào)用,否則會報錯。
②無參數(shù)時函數(shù)的調(diào)用:函數(shù)名(),有參數(shù)時函數(shù)的調(diào)用:函數(shù)名(參數(shù)1.參數(shù)2.……)
③不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用。
④函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。
⑤Debug工具中Step into進入到調(diào)用的函數(shù)里,Step Into My Code進入到調(diào)用的模塊里函數(shù)。
運算
a = 21
b = 10
c = 0
c = a + b
print "1 - c 的值為:", c
c = a - b
print "2 - c 的值為:", c
c = a * b
print "3 - c 的值為:", c
c = a / b
print "4 - c 的值為:", c
c = a % b
print "5 - c 的值為:", c
a = 2
b = 3
c = a**b
print "6 - c 的值為:", c
a = 10
b = 5
c = a//b
print "7 - c 的值為:", c
python比較
a = 21
b = 10
c = 0
if ( a == b ):
print "1 - a 等于 b"
else:
print "1 - a 不等于 b"
if ( a != b ):
print "2 - a 不等于 b"
else:
print "2 - a 等于 b"
if ( a b ):
print "3 - a 不等于 b"
else:
print "3 - a 等于 b"
if ( a b ):
print "4 - a 小于 b"
else:
print "4 - a 大于等于 b"
if ( a b ):
print "5 - a 大于 b"
else:
print "5 - a 小于等于 b"
a = 5
b = 20
if ( a = b ):
print "6 - a 小于等于 b"
else:
print "6 - a 大于 b"
if ( b = a ):
print "7 - b 大于等于 a"
else:
print "7 - b 小于 a"
賦值
a = 21
b = 10
c = 0
c = a + b
print "1 - c 的值為:", c
c += a
print "2 - c 的值為:", c
c *= a
print "3 - c 的值為:", c
c /= a
print "4 - c 的值為:", c
c = 2
c %= a
print "5 - c 的值為:", c
c **= a
print "6 - c 的值為:", c
c //= a
print "7 - c 的值為:", c
邏輯運算符:
a = 10
b = 20
if ( a and b ):
print "1 - 變量 a 和 b 都為 true"
else:
print "1 - 變量 a 和 b 有一個不為 true"
if ( a or b ):
print "2 - 變量 a 和 b 都為 true,或其中一個變量為 true"
else:
print "2 - 變量 a 和 b 都不為 true"
a = 0
if ( a and b ):
print "3 - 變量 a 和 b 都為 true"
else:
print "3 - 變量 a 和 b 有一個不為 true"
if ( a or b ):
print "4 - 變量 a 和 b 都為 true,或其中一個變量為 true"
else:
print "4 - 變量 a 和 b 都不為 true"
if not( a and b ):
print "5 - 變量 a 和 b 都為 false,或其中一個變量為 false"
else:
print "5 - 變量 a 和 b 都為 true"
in,not in
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
if ( a in list ):
print "1 - 變量 a 在給定的列表中 list 中"
else:
print "1 - 變量 a 不在給定的列表中 list 中"
if ( b not in list ):
print "2 - 變量 b 不在給定的列表中 list 中"
else:
print "2 - 變量 b 在給定的列表中 list 中"
a = 2
if ( a in list ):
print "3 - 變量 a 在給定的列表中 list 中"
else:
print "3 - 變量 a 不在給定的列表中 list 中"
條件
flag = False
name = 'luren'
if name == 'python': # 判斷變量否為'python'
flag = True # 條件成立時設(shè)置標(biāo)志為真
print 'welcome boss' # 并輸出歡迎信息
else:
print name
num = 5
if num == 3: # 判斷num的值
print 'boss'
elif num == 2:
print 'user'
elif num == 1:
print 'worker'
elif num 0: # 值小于零時輸出
print 'error'
else:
print 'roadman' # 條件均不成立時輸出
循環(huán)語句:
count = 0
while (count 9):
print 'The count is:', count
count = count + 1
print "Good bye!"
i = 1
while i 10:
i += 1
if i%2 0: # 非雙數(shù)時跳過輸出
continue
print i # 輸出雙數(shù)2、4、6、8、10
i = 1
while 1: # 循環(huán)條件為1必定成立
print i # 輸出1~10
i += 1
if i 10: # 當(dāng)i大于10時跳出循環(huán)
break
for letter in 'Python': # 第一個實例
print '當(dāng)前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二個實例
print '當(dāng)前水果 :', fruit
print "Good bye!"
獲取用戶輸入:raw_input
var = 1
while var == 1 : # 該條件永遠為true,循環(huán)將無限執(zhí)行下去
num = raw_input("Enter a number :")
print "You entered: ", num
print "Good bye!"
range,len
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '當(dāng)前水果 :', fruits[index]
print "Good bye!"
python數(shù)學(xué)函數(shù):
abs,cell,cmp,exp,fabs,floor,log,log10,max,min,mod,pow,round,sqrt
randrange
訪問字符串的值
var1 = 'Hello World!'
var2 = "Python Runoob"
print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
轉(zhuǎn)義字符
格式化輸出
print "My name is %s and weight is %d kg!" % ('Zara', 21)
字符串函數(shù):
添加元素
list = [] ## 空列表
list.append('Google') ## 使用 append() 添加元素
list.append('Runoob')
print list
刪除元素
list1 = ['physics', 'chemistry', 1997, 2000]
print list1
del list1[2]
print "After deleting value at index 2 : "
print list1
列表操作
列表方法
刪除字典
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 刪除鍵是'Name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
字典的函數(shù):
當(dāng)前時間戳:
import time
time.time()
格式化日期輸出
import time
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
a = "Sat Mar 28 22:24:24 2016"
print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
獲取某個月日歷:calendar
import calendar
cal = calendar.month(2016, 1)
print "以下輸出2016年1月份的日歷:"
print cal
當(dāng)前日期和時間
import datetime
i = datetime.datetime.now()
print ("當(dāng)前的日期和時間是 %s" % i)
print ("ISO格式的日期和時間是 %s" % i.isoformat() )
print ("當(dāng)前的年份是 %s" %i.year)
print ("當(dāng)前的月份是 %s" %i.month)
print ("當(dāng)前的日期是 %s" %i.day)
print ("dd/mm/yyyy 格式是 %s/%s/%s" % (i.day, i.month, i.year) )
print ("當(dāng)前小時是 %s" %i.hour)
print ("當(dāng)前分鐘是 %s" %i.minute)
print ("當(dāng)前秒是 %s" %i.second)
不定長參數(shù):*
lambda:匿名函數(shù)
def....
python模塊搜索路徑
獲取用戶輸入
str = raw_input("請輸入:")
print "你輸入的內(nèi)容是: ", str
input可以接收表達式
open參數(shù)
write要自己添加換行符
讀取10個字符
重命名:os.rename
os.remove
os.mkdir os.chdir
os.getcwd
os.rmdir
open參數(shù)
file的方法
異常:
try:
fh = open("testfile", "w")
fh.write("這是一個測試文件,用于測試異常!!")
except IOError:
print "Error: 沒有找到文件或讀取文件失敗"
else:
print "內(nèi)容寫入文件成功"
fh.close()
try:
fh = open("testfile", "w")
fh.write("這是一個測試文件,用于測試異常!!")
finally:
print "Error: 沒有找到文件或讀取文件失敗"
用戶自定義異常:
os 模塊提供了非常豐富的方法用來處理文件和目錄。常用的方法如下表所示:
| 序號 | 方法及描述 |
| 1 |
os.access(path, mode)
檢驗權(quán)限模式 |
| 2 |
os.chdir(path)
改變當(dāng)前工作目錄 |
| 3 |
os.chflags(path, flags)
設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記。 |
| 4 |
os.chmod(path, mode)
更改權(quán)限 |
| 5 |
os.chown(path, uid, gid)
更改文件所有者 |
| 6 |
os.chroot(path)
改變當(dāng)前進程的根目錄 |
| 7 |
os.close(fd)
關(guān)閉文件描述符 fd |
| 8 |
os.closerange(fd_low, fd_high)
關(guān)閉所有文件描述符,從 fd_low (包含) 到 fd_high (不包含), 錯誤會忽略 |
| 9 |
os.dup(fd)
復(fù)制文件描述符 fd |
| 10 |
os.dup2(fd, fd2)
將一個文件描述符 fd 復(fù)制到另一個 fd2 |
| 11 |
os.fchdir(fd)
通過文件描述符改變當(dāng)前工作目錄 |
| 12 |
os.fchmod(fd, mode)
改變一個文件的訪問權(quán)限,該文件由參數(shù)fd指定,參數(shù)mode是Unix下的文件訪問權(quán)限。 |
| 13 |
os.fchown(fd, uid, gid)
修改一個文件的所有權(quán),這個函數(shù)修改一個文件的用戶ID和用戶組ID,該文件由文件描述符fd指定。 |
| 14 |
os.fdatasync(fd)
強制將文件寫入磁盤,該文件由文件描述符fd指定,但是不強制更新文件的狀態(tài)信息。 |
| 15 |
os.fdopen(fd[, mode[, bufsize]])
通過文件描述符 fd 創(chuàng)建一個文件對象,并返回這個文件對象 |
| 16 |
os.fpathconf(fd, name)
返回一個打開的文件的系統(tǒng)配置信息。name為檢索的系統(tǒng)配置的值,它也許是一個定義系統(tǒng)值的字符串,這些名字在很多標(biāo)準(zhǔn)中指定(POSIX.1, Unix 95, Unix 98, 和其它)。 |
| 17 |
os.fstat(fd)
返回文件描述符fd的狀態(tài),像stat()。 |
| 18 |
os.fstatvfs(fd)
返回包含文件描述符fd的文件的文件系統(tǒng)的信息,像 statvfs() |
| 19 |
os.fsync(fd)
強制將文件描述符為fd的文件寫入硬盤。 |
| 20 |
os.ftruncate(fd, length)
裁剪文件描述符fd對應(yīng)的文件, 所以它最大不能超過文件大小。 |
| 21 |
os.getcwd()
返回當(dāng)前工作目錄 |
| 22 |
os.getcwdu()
返回一個當(dāng)前工作目錄的Unicode對象 |
| 23 |
os.isatty(fd)
如果文件描述符fd是打開的,同時與tty(-like)設(shè)備相連,則返回true, 否則False。 |
| 24 |
os.lchflags(path, flags)
設(shè)置路徑的標(biāo)記為數(shù)字標(biāo)記,類似 chflags(),但是沒有軟鏈接 |
| 25 |
os.lchmod(path, mode)
修改連接文件權(quán)限 |
| 26 |
os.lchown(path, uid, gid)
更改文件所有者,類似 chown,但是不追蹤鏈接。 |
| 27 |
os.link(src, dst)
創(chuàng)建硬鏈接,名為參數(shù) dst,指向參數(shù) src |
| 28 |
os.listdir(path)
返回path指定的文件夾包含的文件或文件夾的名字的列表。 |
| 29 |
os.lseek(fd, pos, how)
設(shè)置文件描述符 fd當(dāng)前位置為pos, how方式修改: SEEK_SET 或者 0 設(shè)置從文件開始的計算的pos; SEEK_CUR或者 1 則從當(dāng)前位置計算; os.SEEK_END或者2則從文件尾部開始. 在unix,Windows中有效 |
| 30 |
os.lstat(path)
像stat(),但是沒有軟鏈接 |
| 31 |
os.major(device)
從原始的設(shè)備號中提取設(shè)備major號碼 (使用stat中的st_dev或者st_rdev field)。 |
| 32 |
os.makedev(major, minor)
以major和minor設(shè)備號組成一個原始設(shè)備號 |
| 33 |
os.makedirs(path[, mode])
遞歸文件夾創(chuàng)建函數(shù)。像mkdir(), 但創(chuàng)建的所有intermediate-level文件夾需要包含子文件夾。 |
| 34 |
os.minor(device)
從原始的設(shè)備號中提取設(shè)備minor號碼 (使用stat中的st_dev或者st_rdev field )。 |
| 35 |
os.mkdir(path[, mode])
以數(shù)字mode的mode創(chuàng)建一個名為path的文件夾.默認的 mode 是 0777 (八進制)。 |
| 36 |
os.mkfifo(path[, mode])
創(chuàng)建命名管道,mode 為數(shù)字,默認為 0666 (八進制) |
| 37 |
os.mknod(filename[, mode=0600, device])
創(chuàng)建一個名為filename文件系統(tǒng)節(jié)點(文件,設(shè)備特別文件或者命名pipe)。
|
| 38 |
os.open(file, flags[, mode])
打開一個文件,并且設(shè)置需要的打開選項,mode參數(shù)是可選的 |
| 39 |
os.openpty()
打開一個新的偽終端對。返回 pty 和 tty的文件描述符。 |
| 40 |
os.pathconf(path, name)
返回相關(guān)文件的系統(tǒng)配置信息。 |
| 41 |
os.pipe()
創(chuàng)建一個管道. 返回一對文件描述符(r, w) 分別為讀和寫 |
| 42 |
os.popen(command[, mode[, bufsize]])
從一個 command 打開一個管道 |
| 43 |
os.read(fd, n)
從文件描述符 fd 中讀取最多 n 個字節(jié),返回包含讀取字節(jié)的字符串,文件描述符 fd對應(yīng)文件已達到結(jié)尾, 返回一個空字符串。 |
| 44 |
os.readlink(path)
返回軟鏈接所指向的文件 |
| 45 |
os.remove(path)
刪除路徑為path的文件。如果path 是一個文件夾,將拋出OSError; 查看下面的rmdir()刪除一個 directory。 |
| 46 |
os.removedirs(path)
遞歸刪除目錄。 |
| 47 |
os.rename(src, dst)
重命名文件或目錄,從 src 到 dst |
| 48 |
os.renames(old, new)
遞歸地對目錄進行更名,也可以對文件進行更名。 |
| 49 |
os.rmdir(path)
刪除path指定的空目錄,如果目錄非空,則拋出一個OSError異常。 |
| 50 |
os.stat(path)
獲取path指定的路徑的信息,功能等同于C API中的stat()系統(tǒng)調(diào)用。 |
| 51 |
os.stat_float_times([newvalue])
決定stat_result是否以float對象顯示時間戳
|
| 52 |
os.statvfs(path)
獲取指定路徑的文件系統(tǒng)統(tǒng)計信息 |
| 53 |
os.symlink(src, dst)
創(chuàng)建一個軟鏈接 |
| 54 |
os.tcgetpgrp(fd)
返回與終端fd(一個由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進程組 |
| 55 |
os.tcsetpgrp(fd, pg)
設(shè)置與終端fd(一個由os.open()返回的打開的文件描述符)關(guān)聯(lián)的進程組為pg。 |
| 56 |
os.tempnam([dir[, prefix]])
返回唯一的路徑名用于創(chuàng)建臨時文件。 |
| 57 |
os.tmpfile()
返回一個打開的模式為(w+b)的文件對象 .這文件對象沒有文件夾入口,沒有文件描述符,將會自動刪除。 |
| 58 |
os.tmpnam()
為創(chuàng)建一個臨時文件返回一個唯一的路徑 |
| 59 |
os.ttyname(fd)
返回一個字符串,它表示與文件描述符fd 關(guān)聯(lián)的終端設(shè)備。如果fd 沒有與終端設(shè)備關(guān)聯(lián),則引發(fā)一個異常。 |
| 60 |
os.unlink(path)
刪除文件路徑 |
| 61 |
os.utime(path, times)
返回指定的path文件的訪問和修改的時間。 |
| 62 |
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
輸出在文件夾中的文件名通過在樹中游走,向上或者向下。 |
| 63 |
os.write(fd, str)
寫入字符串到文件描述符 fd中. 返回實際寫入的字符串長度 |
python中定義函數(shù)的關(guān)鍵字是def。
Python使用def關(guān)鍵字開始函數(shù)定義,緊接著是函數(shù)名,括號內(nèi)部為函數(shù)的參數(shù),內(nèi)部為函數(shù)的具體功能實現(xiàn)代碼,如果想要函數(shù)有返回值, 在expressions中的邏輯代碼中用return返回。
上面我們定義了一個名字為 function 的函數(shù),函數(shù)沒有不接受參數(shù),所以括號內(nèi)部為空,緊接著就是 函數(shù)的功能代碼。
如果執(zhí)行該腳本,發(fā)現(xiàn)并沒有輸出任何輸出,因為我們只定義了函數(shù),而并沒有執(zhí)行函數(shù)。 這時我們在Python命令提示符中輸入函數(shù)調(diào)用 function(), 注意這里調(diào)用函數(shù)的括號不能省略。
python的學(xué)習(xí)
如果我們用代碼實現(xiàn)了一個小功能,但想要在程序代碼中重復(fù)使用,不能在代碼中到處粘貼這些代碼,因為這樣做違反了軟件工程中DRY原則。 Python提供了函數(shù)功能,可以將我們這部分功能抽象成一個函數(shù)以方便程序調(diào)用,或者提供給其他模塊使用。
函數(shù)是組織好的,可重復(fù)使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。(推薦學(xué)習(xí):Python視頻教程)函數(shù)必須先定義,才能調(diào)用,否則會報錯,無參數(shù)時函數(shù)的調(diào)用函數(shù)名()。
有參數(shù)時函數(shù)的調(diào),不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用,函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。
浮點數(shù)的數(shù)學(xué)運算函數(shù)。根據(jù)調(diào)查相關(guān)資料得知,Python中math.gbs模塊提供了許多對浮點數(shù)的數(shù)學(xué)運算函數(shù)。主要包括以下幾個部分:數(shù)論與表示函數(shù)、冪函數(shù)與對數(shù)函數(shù)、三角函數(shù)角度轉(zhuǎn)換和雙曲函數(shù)。
新聞標(biāo)題:pythons數(shù)學(xué)函數(shù),python函數(shù)大全
文章來源:http://chinadenli.net/article30/hedgpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、微信公眾號、小程序開發(fā)、網(wǎng)站策劃、標(biāo)簽優(yōu)化、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)