Python 函式的幾種形式還有多值遞迴拆包操作

2022-07-05 08:54:10 字數 4022 閱讀 4603

- 無參,無值

- 無參,有值

- 有參,有值

- 有參,無值

我給出了如下的總結:

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

只是單純地做一件事情,例如顯示選單

在函式內部針對全域性變數進行操作,例如:新建名片,最終結果記錄在全域性變數

注意:

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

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

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

def measuer():

print("開始...")

temp = 30

wetness = 50

print("結束...")

#元祖可以使用多個資料,所以可以放回多個值

# 如果函式返回的元祖,我們可以丟掉小括號

return temp,wetness

result = measuer()

print(result)

# 單獨的拿出來元素,但是不是恆方便

print(result[0])

# 我們可以使用多個變數一次接受返回自

gl_temp,gl_wetbess = measuer()

print(gl_temp)

print(gl_wetbess)

題目要求

有兩個整數變數a = 6,b = 100

不使用其他變數,交換兩個變數的值

解法 1 —— 使用其他變數

# 解法 1 - 使用臨時變數

c = b

b = a

a = c

解法 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]

demo(gl_num, 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)

1. 首先,引數使用賦值語句,可以指定為預設值(預設值)

比如這個的**

def print_info(name, gender=true):

2. **必須保證** **帶有預設值的預設引數** **在引數列表末尾**

3. 在 **呼叫函式時**,如果有 **多個預設引數**,**需要指定引數名**,這樣直譯器才能夠知道引數的對應關係!

以下是具體的**案例

```python

def print_info(name, title="", gender=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 demo(*args, **kwargs):

print(args)

print(kwargs)

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

gl_nums = (1, 2, 3)

gl_xiaoming =

# 會把 num_tuple 和 xiaomin, gl_xiaoming)

demo(*glg 作為元組傳遞個 args

# demo(gl_nums_nums, **gl_xiaoming)

它主要完成的是以下的任務:希望將乙個元組/字典變數直接傳遞給args/kwargs

其實這個是一種演算法。詳見我的部落格,演算法分類

Python函式引數傳遞的幾種形式

莫聽穿林打葉聲,何妨吟嘯且徐行。竹杖芒鞋輕勝馬,誰怕?一蓑煙雨任平生。位置傳參 實際呼叫引數 實參 的對應關係與形式引數 形參 的對應關係是按位置來依次對應的。def fx a,b,c pass fx 1,2,3 序列傳參 在函式呼叫過程中,用 將序列拆解 或收集 後按位置進行傳遞的傳參方式,def...

js函式的幾種引數形式

es6 預設引數特性允許使用預設值初始化引數。這種比上面介紹的方法更好 更簡潔。an highlighted block function parameter param1,param2 0 parameter 1 1 parameter 1 undefined 1function paramete...

Python 佔位的幾種運用形式

號佔位符 轉換形式 轉換標記 寬度 精確度 轉換型別 轉換標記 解釋樣例 左對齊 預設右對齊 print the number is 9f 1991 在正數後加上 print the number is 9f or 0.9f 1991,1991 a space 正數之前保留空格 print the ...