日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值

發(fā)布時(shí)間:2025/7/14 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、函數(shù)參數(shù)

1.1 不定長(zhǎng)參數(shù)

當(dāng)我們定義函數(shù)時(shí),可能需要定義一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù),這些參數(shù)叫做不定長(zhǎng)參數(shù)。

我們可以在形參前面加上一個(gè) * ,這樣這個(gè)形參就可以獲取所有的實(shí)參,它將所有的實(shí)參保存到一個(gè)元組中。

舉例說(shuō)明:

(1) 假如實(shí)參大于形參時(shí),函數(shù)調(diào)用報(bào)錯(cuò)。

def fun(a, b):

print(a + b)

fun(1,2,3)

------------------

fun() takes 2 positional arguments but 3 were given

(2) 不定長(zhǎng)參數(shù)使用:

def fun(*a): # 不定長(zhǎng)參數(shù)

print(a)

fun(1, 2, 3, 4)

----------------

(1, 2, 3, 4)

不定長(zhǎng)參數(shù)特性:

(1) 位置傳參的不定長(zhǎng)參數(shù)

只能存在一個(gè)一個(gè)參數(shù)有 * 號(hào),可以和其他的傳參方式一起配合使用。但是位置參數(shù)不能放在不定長(zhǎng)參數(shù)后面。

def fun1(*a, b):

print(a)

r = 0

for i in a:

r += i

print(r)

fun1(1, 3, 5, 7)

----------------

執(zhí)行錯(cuò)誤:TypeError: fun1() missing 1 required keyword-only argument: 'b'

def fun1(b, *a):

print(a)

r = 0

for i in a:

r += i

print(r)

fun1(1, 3, 5, 7)

-----------------

(3, 5, 7)

15

不定長(zhǎng)參數(shù)要放在關(guān)鍵字傳參前面

def fun1(c, *a, d):

print(a)

r = 0

for i in a:

r += i

print(r)

fun1(1, 3, 5, d=9)

-------------------

(3, 5)

8

(2) 關(guān)鍵字傳參的不定長(zhǎng)參數(shù)

2個(gè) * 號(hào)表示關(guān)鍵字傳參的不定長(zhǎng)參數(shù)。

def fun1(**e):

print(e)

fun1(a=1, b=2, c=3, d=4)

-----------------

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

特性:

位置傳參必須放到不定長(zhǎng)參數(shù)的前面,關(guān)鍵字傳參必須要放到關(guān)鍵字傳參的不定長(zhǎng)參數(shù)之前:

格式:

def fun1(*g, h **e):

print(e)

print(g)

fun1(1, 2, a=1, b=2, c=3, d=4, h=1)

# h 負(fù)責(zé)接收關(guān)鍵字傳參

# *g 負(fù)責(zé)接收位置傳參

# **e 負(fù)責(zé)接收關(guān)鍵字傳參的不定長(zhǎng)參數(shù)

------------------

{'a': 1, 'b': 3, 'c': 5, 'd': 7}

1

(1, 2)

位置傳參的不定長(zhǎng)參數(shù) 與 關(guān)鍵字傳參的不定長(zhǎng)參數(shù)混合使用時(shí),也叫萬(wàn)能參數(shù)。

1.2 參數(shù)的拆包

傳遞參數(shù)時(shí),也可以在序列類型的參數(shù)前添加 "*" 號(hào)。這樣它將會(huì)自動(dòng)的將序列中元素依次作為參數(shù)傳遞。

要求需要中的元素的個(gè)數(shù)必須和形參的個(gè)數(shù)一致。

用,是不行的。

def fun(a, b, c):

print(a)

print(b)

print(c)

tuple1 = (1, 3, 5)

fun(tuple1[0], tuple1[1], tuple1[2])

要傳遞元組中的數(shù)據(jù)時(shí),上面的方式比較麻煩,那么有沒(méi)有更簡(jiǎn)單的方式呢 ?

def fun(a, b, c):

print(a)

print(b)

print(c)

tuple1 = (1, 3, 5)

fun(*tuple1)

----------------------

1

3

5

** 針對(duì)不定長(zhǎng)參數(shù),假如時(shí)一個(gè)字典時(shí) ,參數(shù)拆包怎么使用呢 ?

dict1 = {'a': 1, 'b': 3, 'c': 5, 'd': 7}

def fun2(**dict1)

二、函數(shù)返回值 return

2.1 函數(shù)的返回值 《重點(diǎn)》

函數(shù)內(nèi)的變量或者執(zhí)行結(jié)果,想要直接到函數(shù)外面去使用,這樣直接時(shí)無(wú)法使用的。因此,我們就需要把函數(shù)的的變量或者結(jié)果,放到外面去使用,這樣就要借助于 return。

def fun(*args):

r = 0

for i in args:

r += i

print(r)

fun(1, 2, 3)

# print(r)

-----------------

print(r) 在函數(shù)內(nèi)定義的,函數(shù)外時(shí)無(wú)法使用的。

函數(shù)的返回值 return

return r 只能返回 r 的值,而不能返回指定r 的名稱。

def fun(*args):

r = 0

for i in args:

r += i

print(r)

return r # 返回了r 的值,但是外面不能使用r的名稱。

fun(333, 444, 555, 666)

---------------------

1998

1998

return 返回值,可以定義任何數(shù)據(jù)類型:

return [1, 2, 3]

return True

return 1

return {"a": 1, "b": 2, "c": 3}

return 后面不接數(shù)據(jù)時(shí),返回 None。

def fun3(*args):

r = 0

for i in args:

r += i

#print(r)

# return

def fun4():

pass

return fun4

res = fun3(11, 22, 33, 55)

print(res)

------------------------

.fun4 at 0x000001A4EDEF1C80>

函數(shù)沒(méi)有定義 return 時(shí),返回的也是None。

def fun3(*args):

r = 0

for i in args:

r += i

res1 = fun3(11, 22, 33, 55)

print(res1)

------------------------

None

2.2 函數(shù)的調(diào)用 fun() 《重點(diǎn)》

函數(shù)的調(diào)用獲得了函數(shù)的返回值的結(jié)果。

調(diào)用fun1()

res = fun()

print(res())

res() # res() 就是調(diào)用 fun() 函數(shù)。

結(jié)論:

1、 一個(gè)函數(shù)如果想要有返回值,必須寫 return xxx。

如果沒(méi)有return 和 只有一個(gè)return 沒(méi)有任何返回的對(duì)象,那么這個(gè)函數(shù)的返回值就是None。

2、return 后面的代碼都不再執(zhí)行,看到 return 會(huì)直接退出函數(shù)。

def fun1():

print(1)

return # return 后面的代碼都不再執(zhí)行,看到return直接退出函數(shù)。

print(2)

print(fun1())

2.2 函數(shù)的練習(xí)

def fun(*a):

r = 0

for i in a:

r += i

print(r)

return a

print(fun(1+2, 3))

----------------------

6 # 調(diào)用函數(shù)的結(jié)果

(3, 3) # 函數(shù)的返回值

分析:

fun() 表示函數(shù)的調(diào)用

fun(1+2, 3) 等于函數(shù)的返回值, 也就是 a 的值。

重點(diǎn)理解:

函數(shù)參數(shù)的傳遞

函數(shù)的調(diào)用 fun()

函數(shù)的返回值,即 return 返回的值,

函數(shù)的調(diào)用等于什么 ?a (函數(shù)的調(diào)用返回的是函數(shù)返回值的結(jié)果)

三、文檔字符串

3.1 長(zhǎng)字符串

作用: 保留文本的格式; 作位一個(gè)多行注釋。

格式:"""xxx"""

"""

1) 保留文本的格式

2) 作位一個(gè)多行注釋。

"""

3.2 文檔字符串

作用: 對(duì)函數(shù)以及類進(jìn)行說(shuō)明作用及參數(shù)返回的一個(gè)文檔說(shuō)明。

例如 print() 函數(shù)

def print(self, *args, sep=' ', end='\n', file=None): # known special case of print

"""

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:

file: a file-like object (stream); defaults to the current sys.stdout.

sep: string inserted between values, default a space.

end: string appended after the last value, default a newline.

flush: whether to forcibly flush the stream.

"""

pass

四、作用域

作用域(scope)

作用域,是指變量生效的區(qū)域

python 中一共有2中作用域:全局作用域 和 函數(shù)作用域。

函數(shù)外部的區(qū)域都是全局作用域。

在全局作用域中定義的變量,都是全局變量,全局變量可以在任何地方使用。

函數(shù)的作用域在函數(shù)調(diào)用時(shí)創(chuàng)建,在調(diào)用結(jié)束后銷毀。

a = 1

def fun():

a = 10

print(a)

fun()

print(a)

-------------

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

1 # 全局變量

練習(xí)

用函數(shù)實(shí)現(xiàn)一個(gè)判斷用戶輸入的年份是否為閏年的程序:

能被400整除的年份

能被4整除,但是不能被100整除的年份

以上2種方法滿足一種即為閏年。

def fun():

while True:

year = int(input("請(qǐng)輸入年份:"))

if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):

print('%d是閏年' % year)

else:

print('%d不是閏年' % year)

fun()

----------------

請(qǐng)輸入年份:2000

2000是閏年

請(qǐng)輸入年份:2001

2001不是閏年

請(qǐng)輸入年份:2020

2020是閏年

請(qǐng)輸入年份:

猴子吃桃問(wèn)題(遞歸)

猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,有多吃了一個(gè),第二天早上又將剩下的桃子吃掉了一半,又多吃了一個(gè),以后每天早上都吃了前一天剩下的一半零一個(gè)。到了第10天早上想再吃時(shí),見到只剩下一個(gè)桃子了,請(qǐng)問(wèn)一共摘了多少個(gè) 桃子 ?

思路:

假設(shè)總共x 個(gè)桃子,每天吃一半多吃一個(gè),那第二天剩下:x/2-1.

依次遞減,到第10天為1個(gè),可以反過(guò)來(lái)思考,設(shè)置一個(gè)隊(duì)列,令對(duì)列從右到左取值,索引為-1的元素=1,然后前一個(gè)索引對(duì)應(yīng)的元素則為 (x+1)*2

list.insert(index, (x+1) * 2),到第10個(gè)索引對(duì)應(yīng)的的值,即list[0]對(duì)應(yīng)的值就是第一天摘的桃子總數(shù)

def fun1():

i = -1

x = 1

list1 = []

while i >= -10:

if i == -1:

list1.append(x)

#print(list1)

i = i - 1

if i < -1:

x = (x+1) * 2

list1.insert(i-1, x)

i = i-1

print(list1)

return x

print('猴子一共摘了%d個(gè)桃子' % fun1())

-------------輸出--------------

[1534, 766, 382, 190, 94, 46, 22, 10, 4, 1]

猴子一共摘了1534個(gè)桃子

總結(jié)

以上是生活随笔為你收集整理的python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。