Python基礎之函式基本用法與高階詳解

2022-10-02 02:00:10 字數 4179 閱讀 9890

函式引數和返回值的作用

函式根據 有沒有引數 以及 有沒有返回值,可以 相互組合,一共有 4 種 組合形式

定義函式時,是否接收引數,或者是否返回結果,是根據 實際的功能需求 來決定的!

此類函式,不接收引數,也沒有返回值,應用場景如下:

注意:

此類函式,不接收引數,但是有返回值,應用場景如下:

此類函式,接收引數,沒有返回值,應用場景如下:

此類函式,接收引數,同時有返回值,應用場景如下:

在程式開發中,有時候,會希望 乙個函式執行結束後,告訴呼叫者乙個結果,以便呼叫者針對具體的結果做後續的處理

問題:乙個函式執行後能否返回多個結果?

示例 —— 溫度和濕度測量

def measure():

"""返回當前的溫度"""

print("開始測量...")

temp = 39

print("測量結束...")

return temp

result = measure()

print(result)

def measure():

"""返回當前的溫度"""

print("開始測量...")

temp = 39

wetness = 10

print("測量結束...")

return (temp, wetness)

提示:如果乙個函式返回的是元組,括號可以省略

技巧

result = temp, wetness = measure()

題目要求

解法 1 —— 使用其他變數

# 解法 1 - 使用臨時變數

c = b

b = a

a =

解法 2 —— 不使用臨時變數

# 解法 2 - 不使用臨時變數

a = a + b

b = a - b

a = a - b

解法 3 —— python 專有,利用元組

a, b = b, a

問題 1:在函式內部,針對引數使用 賦值語句,會不會影響呼叫函式時傳遞的 實參變數? —— 不會!

def demo(num, num_list):

print("函式內部")

# 賦值語句

num = 200

num_list = [1, 2, 3]

print(num)

print(num_list)

print("函式**完成")

gl_num = 99

gl_list = [4, 5, 6]

de gl_list)

print(gl_num)

print(gl_list)

問題 2:如果傳遞的引數是 可變型別,在函式內部,使用 方法 修改了資料的內容,同樣會影響到外部的資料

def mutable(num_list):

# num_list = [1, 2, 3]

num_list.extend([1, 2, 3])

print(num_list)

gl_list = [6, 7, 8]

mutable(gl_list)

print(gl_list)

面試題 —— +=

def demo(num, num_list):

print("函式內部**")

# num = num + num

num += num

# num_list.extend(num_list) 由於是呼叫方法,所以不會修改變數的引用

# 函式執行結束後,外部資料同樣會發生變化

num_list += num_list

print(num)

print(num_list)

print("函式**完成")

gl_num = 9

gl_list = [1, 2, 3]

demo(gl_num, gl_list)

print(gl_num)

print(gl_list)

gl_num_list = [6, 3, 9]

# 預設就是公升序排序,因為這種應用需求更多

gl_num_list.sort()

print(gl_num_list)

# 只有當需要降序排序時,才需要傳遞 `reverse` 引數

gl_num_list.sort(reverse=true)

print(gl_num_list)

指定函式的預設引數

def print_info(name, gender=true):

gender_text = "男生"

if not gender:

gender_text = "女生"

print("%s 是 %s" % (name, gender_text))

提示

預設引數的注意事項

def print_info(name, gender=true, title):

def print_info(name, title="", genderkeakqmot=true):

""":param title: 職位

:param name: 班上同學的姓名

:param gender: true 男生 false 女生

"""gender_text = "男生"

if not gender:

gender_text = "女生"

print("%s%s 是 %s" % (title, name, gender_text))

# 提示:在指定預設引數的預設值時,應該使用最常見的值作為預設值!

print_info("小明")

print_info("老王", title="班長")

print_info("小美", gender=false)

定義支援多值引數的函式

def demo(num, *args, **kwargs):

print(num)

print(args)

print(kwargs)

demo(1, 2, 3, 4, 5, name="小明", age=18, gender=true)

提示:多值引數 的應用會經常出現在網路上一些大牛開發的框架中程式設計客棧,知道多值引數,有利於我們能夠讀懂大牛的**

多值引數案例 —— 計算任意多個數字的和

需求

def sum_numbers(*args):

num = 0

# 遍歷 args 元組順序求和

for n in args:

num += n

return num

print(sum_numbers(1, 2, 3))

元組和字典的拆包(知道)

def demo(*args, **kwargs):

print(args)

print(kwargs)

# 需要將乙個元組變數/字典變數傳遞給函式對應的引數

gl_nums = (1, 2, 3)

gl_xiaoming =

# 會把 num_tuple 和 xiaoming 作為元組傳遞個 args

# demo(gl_nums, gl_xiaoming)

demo(*gl_nums, **gl_xiaoming)

函式呼叫自身的 程式設計技巧 稱為遞迴

特點

**特點

示例**

def sum_numbers(num):

print(num)

# 遞迴的出口很重要,否則會出現死迴圈

if num == 1:

return

sum_numbers(num - 1)

sum_numbers(3)

需求

def sum_numbers(num):

if num == 1:

return 1

# 假設 sum_numbers 能夠完成 num - 1 的累加

temp = sum_numbers(num - 1)

# 函式內部的核心演算法就是 兩個數字的相加

return num + temp

print(sum_numbers(2))

提示:遞迴是乙個 程式設計技巧,初次接觸遞迴會感覺有些吃力!在處理 不確定的迴圈條件時,格外的有用,例如:遍歷整個檔案目錄的結構

python基礎 print 函式基本用法

print 值相加,相乘 print是列印的意思,在這裡指的是向螢幕上輸出指定的文字 print 可以列印單個值,也可以列印多個值,還可以設定以什麼字元作為多個值之間的分隔.docstring print value,sep end n file sys.stdout,flush false pri...

Python基礎之函式用法例項詳解

通常來說,python的函式是由乙個新的語句編寫,即def,def是可執行的語句 函式並不存在,直到python執行了def後才存在。函式是通過賦值傳遞的,引數通過賦值傳遞給函式 def語句將建立乙個函式物件並將其賦值給乙個變數名,def語句的一般格式如下 def arg1,arg2,arg3,ar...

Python基礎之Numpy的基本用法詳解

a np.array 1,2,3,4,5,6,7,8,9,10,11 一維陣列 b np.array 1,2 3,4 二維陣列 numpy.arange start,stop,step,dtype start預設0,step預設1 c np.arange 0,10,1,dtype int np.ar...