欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python函數(shù)基礎(chǔ)

函數(shù)基礎(chǔ)

函數(shù)的作用

函數(shù)就是包裹一部分的代碼,實(shí)現(xiàn)某一個(gè)功能,達(dá)成某一個(gè)目的,而且當(dāng)這段代碼如果使用或者重復(fù)使用的時(shí)候,只需要很簡(jiǎn)單的調(diào)用即可,大大減少了代碼的維護(hù)難度。

滕州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!

函數(shù)的特點(diǎn)

可以反復(fù)調(diào)用,提高代碼的復(fù)用性,提升開(kāi)發(fā)效率,便于維護(hù)管理。

函數(shù)的定義和調(diào)用

函數(shù)的定義要使用到關(guān)鍵字def,且函數(shù)定義不會(huì)執(zhí)行函數(shù)中的代碼,而是需要調(diào)用函數(shù)才會(huì)執(zhí)行。

定義方法

定義函數(shù)在關(guān)鍵字def后面加上函數(shù)名,然后后面加上括號(hào),括號(hào)中可以酌情選擇是否寫(xiě)上參數(shù),在對(duì)應(yīng)的作用域中寫(xiě)上代碼。

# 語(yǔ)法:
def function_name([parameter0],[parameter1]):
    code0
    code1
    code2
    ……
調(diào)用方法

直接使用定義好的函數(shù)的函數(shù)名加上括號(hào),括號(hào)中寫(xiě)上對(duì)應(yīng)的參數(shù),就會(huì)執(zhí)行作用域中的代碼。

# 語(yǔ)法:
funciton_name([parameter0],[parameter1])

注意,只要函數(shù)只有在調(diào)用的時(shí)候才能執(zhí)行其中的代碼

定義一個(gè)沒(méi)有參數(shù)的函數(shù)

# 定義函數(shù)
def func():
	print('this is function')

# 調(diào)用函數(shù)
func()  # this is function

帶有參數(shù)的函數(shù)

# 定義函數(shù)
def func(name):
	print('this is ' + name)

# 調(diào)用函數(shù)
func('msr')  # this is msr

命名

函數(shù)的命名和變量命名的規(guī)則是一樣的,推薦使用小駝峰命名法。

參數(shù)

函數(shù)的參數(shù),是配合函數(shù)運(yùn)算的值。在函數(shù)中的代碼使用參數(shù)的時(shí)候,就和使用變量的方法是一樣的。

定義函數(shù)的時(shí)候的參數(shù)叫做形式參數(shù),形參就就相當(dāng)于定義變量的變量名,填的參數(shù)只是為了確定功能,所以叫作形式參數(shù);調(diào)用函數(shù)的時(shí)候的參數(shù)叫做實(shí)際參數(shù),實(shí)參就相當(dāng)于定義變量的時(shí)候的值,這個(gè)時(shí)候的參數(shù)具有實(shí)際的作用,所以叫作實(shí)際參數(shù)。

參數(shù)的分類(lèi)

形參 實(shí)參
普通形參 普通實(shí)參
默認(rèn)形參 關(guān)鍵字實(shí)參
普通收集形參
命名關(guān)鍵字形參
關(guān)鍵字收集形參

遵循原則

函數(shù)調(diào)用的時(shí)候的參數(shù)要和定義的時(shí)候一一對(duì)應(yīng)。

普通形參和普通實(shí)參

普通形參就是定義函數(shù)時(shí)在括號(hào)內(nèi)直接寫(xiě)參數(shù)名,普通形參沒(méi)有賦予值,所以在函數(shù)調(diào)用的時(shí)候必須要對(duì)普通形參賦予值,否則報(bào)錯(cuò)。

調(diào)用函數(shù)的時(shí)候直接寫(xiě)上的值就是普通實(shí)參。

# 直接寫(xiě)上參數(shù)名就是普通形參
def myName(name):
	res = 'My name is %s' % name
	print(res)


my_name = 'msr'
# 調(diào)用函數(shù)的時(shí)候直接寫(xiě)上的值就是普通實(shí)參
myName(my_name)  

# 參數(shù)要一一對(duì)應(yīng),所以調(diào)用函數(shù)的時(shí)候不寫(xiě)參數(shù)就會(huì)報(bào)錯(cuò)
myName()    # error

默認(rèn)形參

默認(rèn)形參就是在定義函數(shù)的時(shí)候,參數(shù)就指定了一個(gè)值,換句話(huà)說(shuō)默認(rèn)形參就是一個(gè)帶有默認(rèn)值的普通形參。在調(diào)用函數(shù)的時(shí)候如果給默認(rèn)參數(shù)指定了值,默認(rèn)參數(shù)的實(shí)際值就是調(diào)用處的值,如果沒(méi)有賦予值,默認(rèn)參數(shù)的值就是定義處的值。

# 定義函數(shù)的時(shí)候帶有默認(rèn)值的就是默認(rèn)參數(shù)
def myName(name='msr'):
   res = 'My name is %s' % name
   print(res)


# 調(diào)用處指定值
my_name = 'msr'
myName(my_name)  # My name is msr

# 調(diào)用處不指定值
myName()  # My name is msr

當(dāng)普通參數(shù)和默認(rèn)參數(shù)他同時(shí)存在的時(shí)候,默認(rèn)參數(shù)必須要在普通參數(shù)的后面,否則報(bào)錯(cuò)。

def myName(name, name1='msr'):
	print(name, name1)

myName('wxd',)  # wxd msr

關(guān)鍵字實(shí)參

普通實(shí)參就是在調(diào)用函數(shù)的時(shí)候直接填寫(xiě)值,這樣的賦值不能打亂順序,要按照形參定義的順序來(lái)寫(xiě)。
關(guān)鍵字實(shí)參是對(duì)具體的某個(gè)參數(shù)賦值,這樣就可以打亂參數(shù)的順序使用,但是全部使用關(guān)鍵字實(shí)參必須將所有普通形參全部使用關(guān)鍵字實(shí)參,否則報(bào)錯(cuò)

def name(name1, name2, name3, name4='沒(méi)有名字'):
   print(name1, name2, name3, name4)

# 普通實(shí)參
name(111, 222, 333, 444)    # 111 222 333 444

# 關(guān)鍵字實(shí)參
name(name2=444, name1=222, name3=111, name4=333)    # 222 444 111 333

普通實(shí)參和關(guān)鍵字實(shí)參一起使用的時(shí)候,關(guān)鍵字實(shí)參也是不能寫(xiě)在普通實(shí)參的前面的。

注意要區(qū)分默認(rèn)形參和關(guān)鍵字實(shí)參,默認(rèn)形參和關(guān)鍵字實(shí)參在語(yǔ)法上是一模一樣的,都是給某個(gè)參數(shù)一個(gè)固定的值,且都必須跟在普通形參和實(shí)參之后。但是區(qū)分的方法很簡(jiǎn)單,默認(rèn)形參是形式參數(shù),在定義函數(shù)時(shí)的就是默認(rèn)形參,關(guān)鍵字實(shí)參是實(shí)際參數(shù),在調(diào)用函數(shù)時(shí)的就是關(guān)鍵字實(shí)參。

普通收集參數(shù)

函數(shù)的實(shí)參要和形參一一對(duì)應(yīng),如果有普通實(shí)參沒(méi)有對(duì)應(yīng)的形參,普通收集參數(shù)就可以用來(lái)專(zhuān)門(mén)收集多余的普通實(shí)參,在普通形參的前面加上一個(gè)* 就是普通收集參數(shù),普通收集參數(shù)一般習(xí)慣命名為 args 。收集的數(shù)據(jù)會(huì)變成一個(gè)元組。

def func(name, *args):
	print(name)  # msr
	print(args)  # (1, 2, 3, 4, 5, 6)

func('msr', 1, 2, 3, 4, 5, 6)

關(guān)鍵字收集參數(shù)

關(guān)鍵字收集參數(shù)和普通收集參數(shù)的作用和普通收集參數(shù)的租用基本相同的,只不過(guò)關(guān)鍵字收集參數(shù)收集的是關(guān)鍵字實(shí)參,關(guān)鍵字收集參數(shù)在普通形參的前面加上 ** 符號(hào),一般命名為kwargs,收集的數(shù)據(jù)變成一個(gè)字典。

def func(*args, **kwargs):
	print(args)
	print(kwargs)

func(1, 2, 3, 4, name='msr', age=18, sex=0)

'''
結(jié)果:
(1, 2, 3, 4)
{'name': 'msr', 'age': 18, 'sex': 0}
'''

普通收集參數(shù)和關(guān)鍵字參數(shù)一起可以收集所有的實(shí)參

# 收集所有的實(shí)參
def func(*args, **kwargs):
   print(args)
   print(kwargs)

命名關(guān)鍵字參數(shù)

命名關(guān)鍵字參數(shù)就是在函數(shù)調(diào)用的時(shí)候,必須使用關(guān)鍵字實(shí)參進(jìn)行賦值的形參。

定義命名關(guān)鍵字參數(shù)的兩種方式:
def function_name(parameter, *, parameter2)

參數(shù)2是命名關(guān)鍵字, * 后面的參數(shù)為命名關(guān)鍵字

**def function_name(*args, parameter, kwargs)

parameter是命名關(guān)鍵字,普通收集參數(shù)后面的普通形參是命名關(guān)鍵字參數(shù)

# 方法一, * 本身不是一個(gè)參數(shù):
def func(*, a, b, c, d):
	print(a, b, c, d)   # A B C D

func(a='A', b='B', c='C', d='D')
# 方法二:
def func(*args, a, b, c):
	print(a, b, c)  # 3 4 2

func(a=3, b=4, c=2)

符號(hào) * 和 ** 的使用

* 和 ** 在函數(shù)的定義處,用來(lái)做收集操作,打包

* 和 ** 在函數(shù)的調(diào)用處,用來(lái)做打散操作,解包

* 在定義處用來(lái)收集普通實(shí)參,成為元組;在調(diào)用處用來(lái)打散容器成為普通實(shí)參,如果是字典,只獲取鍵。

** 在定義處用來(lái)收集關(guān)鍵字實(shí)參,成為字典;在調(diào)用處用來(lái)打散字典(只能是字典,且鍵為字符串)成為關(guān)鍵字實(shí)參。

def func(*args):
   print(args)


lst = [1, 2, 3, 4, 5, 6]

# 如果將列表直接作為參數(shù)放入,lst就是一個(gè)參數(shù)
func(lst)   # ([1, 2, 3, 4, 5, 6],)

# 如果在lst前面加上 * ,就將列表列表解包,每一個(gè)元素都是一個(gè)參數(shù)
func(*lst)  # (1, 2, 3, 4, 5, 6)

相當(dāng)于將列表中的元素一個(gè)個(gè)拿出,當(dāng)成一個(gè)個(gè)普通實(shí)參給函數(shù)進(jìn)行調(diào)用,**也是一樣的。

def func(**kwargs):
   print(kwargs)


dct = {'one': 1, 'two': 2, 'three': 3}

# ** 可以解包字典
func(**dct)  # {'one': 1, 'two': 2, 'three': 3}

return關(guān)鍵字

return可以返回自定義函數(shù)的值,叫做返回值,可以把函數(shù)最終運(yùn)算出的結(jié)果返回到函數(shù)的調(diào)用處。

  1. return可以返回任何的python數(shù)據(jù),六大數(shù)據(jù)類(lèi)型、對(duì)象、類(lèi)、函數(shù)……,只需要將要返回值的寫(xiě)在return的后面即可;
  2. 定義return返回值返回的就是定義的值,返回返回None;
  3. 函數(shù)在執(zhí)行到return的時(shí)候跳出函數(shù),函數(shù)中剩余的代碼不會(huì)在執(zhí)行;

不指定return返回值,返回None。

# 定義函數(shù)
def func():
	print('hello')

# 調(diào)用函數(shù)
# 函數(shù)執(zhí)行打印'hello',沒(méi)有定義返回值,返回None給res
res = func()
print(res)

'''
結(jié)果:
hello
None
'''

定義返回值。

# 定義函數(shù)
def func():
	print('hello')
	return 'motherland'

# 調(diào)用函數(shù),返回'motherland'給res
res = func()
print(res)

'''
結(jié)果:
hello
motherland
'''

執(zhí)行return之后,函數(shù)后面未執(zhí)行的代碼不再執(zhí)行。

# 定義函數(shù)
def func():
	print(1)
	return 2
	print(3)

# 調(diào)用函數(shù)
func()

'''
結(jié)果:
1
'''

函數(shù)名的使用

python中的函數(shù)可以像變量一樣,動(dòng)態(tài)創(chuàng)建銷(xiāo)毀,當(dāng)作參數(shù)傳遞,作為值返回,叫第一類(lèi)對(duì)象,其他語(yǔ)言功能有限。

  1. 函數(shù)名是一個(gè)特殊的變量,可以作為變量使用和賦值;

    def func():
    	print('hello motherland')
    
    var = func
    
    var()   # hello motherland
    
  2. 函數(shù)可以像變量一樣銷(xiāo)毀

    def func():
    	print('hello motherland')
    
    del func
    
    func()  # error,不存在
    
  3. 函數(shù)名可以作為容器類(lèi)型數(shù)據(jù)的元素;

    def func0():
    	print('func 0')
    def func1():
    	print('func 1')
    def func2():
    	print('func 2')
    
    lst = [func0, func1, func2]
    
    for i in lst:
    	i()
    
    '''
    結(jié)果:
    func 0
    func 1
    func 2
    '''
    
  4. 函數(shù)名可以作為函數(shù)的參數(shù);

    def func1():
    	print('我是 func 1')
    
    def func2(function):
    	function()
    
    func2(func1)    # 我是 func 1
    
  5. 函數(shù)名可以作為函數(shù)的返回值;

    def func1():
    	print('我是 func 1')
    
    
    def func2(function):
    	return function
    
    res = func2(func1)
    
    res()   # 我是 func 1
    

函數(shù)的說(shuō)明文檔

在定義函數(shù)的時(shí)候,在函數(shù)的上方使用單行注釋、或者在下方使用多行注釋可以為函數(shù)注釋說(shuō)明。

可以使用__doc__方法或者是help函數(shù)查看。

使用help函數(shù)查看在函數(shù)的注釋說(shuō)明。

# 這是我的第一個(gè)函數(shù)
# 函數(shù)的注釋在上方
def func():
    pass

print(help(func))

'''
結(jié)果:
Help on function func in module __main__:

func()
    # 這是我的第一個(gè)函數(shù)
    # 函數(shù)的注釋在上方

None
'''

使用 __doc__方法查看。

def func():
	"""
	這是我的第二個(gè)函數(shù)
	函數(shù)的注釋在下方
	"""
	pass

# 使用
print(func.__doc__)

'''
結(jié)果:

	這是我的第二個(gè)函數(shù)
	函數(shù)的注釋在下方
	
'''

總結(jié)

形參在一起使用的時(shí)候要哪找順序。

普通參數(shù) -> 默認(rèn)參數(shù) -> 普通收集參數(shù) -> 命名關(guān)鍵字參數(shù) -> 關(guān)鍵字收集參數(shù)

網(wǎng)頁(yè)名稱(chēng):python函數(shù)基礎(chǔ)
網(wǎng)站地址:http://chinadenli.net/article20/dsoghjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站收錄、Google、品牌網(wǎng)站設(shè)計(jì)、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
美女被啪的视频在线观看| 97人摸人人澡人人人超碰| 在线欧美精品二区三区| 91日韩在线观看你懂的| 国产精品免费视频久久| 国产高清视频一区不卡| 国产熟女一区二区精品视频| 好吊妞在线免费观看视频| 日韩欧美国产精品自拍| 九九热这里有精品20| 肥白女人日韩中文视频| 色婷婷国产熟妇人妻露脸| 激情图日韩精品中文字幕| 老司机精品一区二区三区| 中国一区二区三区人妻| 久久黄片免费播放大全| 成人精品日韩专区在线观看| 久久免费精品拍拍一区二区| 欧美黄色黑人一区二区| 久久精品中文扫妇内射| 这里只有九九热精品视频| 伊人国产精选免费观看在线视频 | 国产欧美一区二区久久| 国产精品成人一区二区在线| 一区二区不卡免费观看免费| 中文字幕人妻av不卡| 日本一区不卡在线观看| 国产一区二区精品丝袜| 欧美精品日韩精品一区| 国产一级精品色特级色国产| 日韩熟妇人妻一区二区三区| 91后入中出内射在线| 欧美日韩精品综合一区| 国产爆操白丝美女在线观看| 国产情侣激情在线对白| 草草草草在线观看视频| 亚洲中文字幕免费人妻| 日韩欧美在线看一卡一卡| av免费视屏在线观看| 人妻久久这里只有精品| 国产偷拍精品在线视频|