Python筆記-8 函數(shù)
函數(shù)(Functions)
python常用的內(nèi)置函數(shù)
len()
range()創(chuàng)建一個(gè)左閉右開區(qū)間的整數(shù)序列
print(“”)
自定義一個(gè)函數(shù)
函數(shù)代碼塊以?def?關(guān)鍵詞開頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號?()。
任何傳入?yún)?shù)和自變量必須放在圓括號中間,圓括號之間可以用于定義參數(shù)。
函數(shù)內(nèi)容以冒號?:?起始,并且縮進(jìn)。
return [表達(dá)式]?結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方,不帶表達(dá)式的 return 相當(dāng)于返回 None。

調(diào)用函數(shù)
使用函數(shù)名直接調(diào)用,可以多次調(diào)用
參數(shù):
1,形參(函數(shù)定義時(shí)的參數(shù))和實(shí)參(實(shí)際傳入的參數(shù))
2,定義函數(shù)時(shí),就會(huì)給參數(shù)設(shè)置默認(rèn)值,這樣的默認(rèn)參數(shù)可以不傳值,直接讀取默認(rèn)值,也可以傳值,按照新傳值讀取,注意默認(rèn)參數(shù)放在參數(shù)定義列表的后面位置
3,關(guān)鍵字參數(shù)
def func(var1,var2= 10,var3=20):
? ? ? print (“var1 is”var1,“var2?is”var2,“var3?is”var3)
func(5)
-- 輸出var1?is5,var2?is 10,var3?is 20
func(5,var2=?20,var3=30)
-- 輸出var1?is5,var2?is 20,var3?is? 30
返回值:
def sum_and_cheng(a,b):
? ? return a+b,a*b
num1,num2 = sum(3,4) # 多個(gè)返回值可以用多個(gè)變量接收
print (num1)
print (num2)
補(bǔ)充:
當(dāng)一個(gè)函數(shù)執(zhí)行到return代碼塊的時(shí)候,就結(jié)束了
所以后面寫的內(nèi)容不會(huì)被執(zhí)行
全局變量/局部變量
1,在函數(shù)內(nèi)部定義的變量,函數(shù)外部用不了
def func():
? ? x=20
? ? print(“x is ”,x)
func()#調(diào)用函數(shù)可以打印
print(“x is?”,x)#打印不了
2,外部定義的變量,函數(shù)內(nèi)部可以用
x=20
def func():
? ? print(“x is?”,x)
func()#調(diào)用函數(shù)可以打印
3,應(yīng)用
x= 50
def func(x):
? ? print(“x is?”,x)??#50
? ? x= 20
? ??print(“change? x is?”,x)?#20
func(x)??#? 鼠標(biāo)放在x上??ctrl+鼠標(biāo)左鍵? ?可以定位到傳參位置 x=50
print(“? x is? still ”,x) #50
4,全局變量 global
x= 50
def func():
? ?global??x
? ? print(“x is?”,x)??#50
? ? x= 20
? ??print(“change? x is?”,x)?#20
func()??#? 鼠標(biāo)放在x上??ctrl+鼠標(biāo)左鍵? ?可以定位到傳參位置 x=50
print(“? x is? still?”,x)?#20
模塊
在python中,一個(gè)文件(以.py為后綴名的文件)就叫做一個(gè)模塊,每一個(gè)模塊在python里都被看作是一個(gè)獨(dú)立的文件
模塊可以被其他文件調(diào)用并使用其中的方法和數(shù)據(jù)
先在根目錄創(chuàng)建包?python package 再在package下創(chuàng)建 python file
可以在一個(gè)文件中寫好函數(shù),其他文件直接調(diào)用
eg:?
def hello():
? ? ?print("hello world !")
1,在本文件中調(diào)用,直接 hello()即可
2,在其他文件中調(diào)用,
①
import 包名.文件名 #導(dǎo)入模塊
包名.文件名.?hello()
②
from? 包名.文件名??import??hello?#導(dǎo)入方法
hello()
python常用內(nèi)置模塊:
math模塊
random模塊:提供隨機(jī)數(shù)。
import random
random.randint(1,100)# 取1-100范圍內(nèi)隨機(jī)整數(shù)
random.random(1,1)# 取1-1范圍內(nèi)隨機(jī)浮點(diǎn)型
random.choice(‘a(chǎn)bcdef’)# 取隨機(jī)字符
time&datetime模塊:時(shí)間相關(guān)的操作,時(shí)間有三種表示方式;
print(time.time())#時(shí)間戳,自1970年0時(shí)0分0秒距離現(xiàn)在的秒數(shù)
print(time.strftime(“%Y-%m-%d? %H:%M:%S”))#格式化
a= time.localtime()?#元組 a[0]:2023 a[1]:7? a[2]:7
time.sleep(3)#沉睡三秒
datetime模塊是time模塊的封裝
today = datetime.date.today() # 當(dāng)天的日期
one_day = datetime.timedelta(days=1)
print(today -?one_day)?# 昨天
print(today +?one_day)?# 明天
os模塊:文件和目錄,用于提供系統(tǒng)級別的操作;
os.name? #系統(tǒng) window:nt,linux/unix:posix
os.getcwd() #獲取當(dāng)前路徑
os.listdir() #獲取當(dāng)前路徑下的文件
os.mkdir() #創(chuàng)建目錄
os.path.exists() #判斷文件是否存在,布爾類型
sys模塊:用于提供對解釋器相關(guān)的操作;
re模塊:正則表達(dá)式模塊
json模塊:處理JSON字符串;
logging: 用于便捷記錄日志且線程安全的模塊;
hashlib模塊:用于加密相關(guān)操作,代替了md5模塊,主要是提供SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法;
ConfigParser:提供了配置文件創(chuàng)建、解析、修改等功能。(Python2中,它的命名是駝峰式的,為ConfigParser)
shelve模塊
xml模塊
shutil模塊
pickle模塊
uuid模塊:uuid.uuid4()作用是隨機(jī)生成一個(gè)UUID(可能會(huì)重復(fù))。uuid1()基于MAC地址,時(shí)間戳,隨機(jī)數(shù)來生成唯一的uuid,可以保證全球范圍內(nèi)的唯一性。(暴露mac)
遞歸
①階乘
遞歸調(diào)用
def num(n): ??
? ? ??if n == 0: ? ? ? ?
? ? ? ? ? return 1 ? ?
? ? ? else: ? ? ? ?
? ? ? ? ? ?return n * num(n - 1)
print(num(6))
②斐波那契數(shù)列
def
fib2(q):
????
if
q
=
=
1
or
q
=
=
2
:
????????
return
1
????
return
fib2(q
-
1
)
+
fib2(q
-
2
)
print
(fib2(
9
))