小學生都能學會的python 函式的高階

2022-05-07 18:15:07 字數 4691 閱讀 5235

小學生都能學會的python(函式的高階)

1. 動態傳參

形參:1. 位置引數

2. 預設值引數

3. 動態傳參

*args 動態接收位置引數

**kwargs 動態接收關鍵字引數

def func(*args, **kwargs):

在形參上用*,** 表示聚合. 實參表示打散

順序:位置 *args 預設值 **kwargs

# def chi(*food): # * 表示的是不定引數. 可以傳遞任意個資訊 引數名是food, 接受到的是元組

# print("我要吃", food)

## chi("一鍋大公尺飯", "一箱辣條", "一桶速食麵", "4l可樂")

# chi("速食麵")

# chi("一大鍋公尺飯", "一小鍋小公尺飯", "一箱辣條", "一桶速食麵", "4l可樂")

# * 表接收位置引數的動態傳參

# 傳參的順序

# 位置 *args 預設值 **kwargs

## 如果預設值引數在*args前面. 如果想讓預設值生效. *args將永遠接不到值

# def func( a, b, *args,c = 5): # arguments引數

# print(a, b, c, args)

## func(1,2,3,4,5,6,8,c = 10)

# 關鍵字的動態傳參

# *args 位置引數 接收到的是元組

# **kwargs 關鍵字的動態傳參, 接收到的是字典

# def func(**kwargs): # key word arguments

# print(kwargs)

## func(a=10, b=20, jay="周杰倫", jj="林俊傑")

# 無敵模式. 所有的引數都能接收

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

# print(args)

# print(kwargs)

## func(1, 2, 5, jj="陶喆", jay="zhoujielun", soup="胡辣湯")

# def func(*args): # 在這裡. 其實相當於把傳進來的引數做了一次聚合, 聚合成乙個元組

# print(args)

## lst = "娃哈哈"

# func(*lst) # 在實參位置 * 表示打散, 打散的是可迭代物件

# def func(**kwargs): # ** 把接收到的關鍵字引數打包(聚合)成字典

# print(kwargs) # 一定是字典

## dic =

## # func(張無忌=dic['張無忌'], 謝遜=dic['謝遜'], 範瑤=dic['範瑤'])

# func(**dic) # 這裡的** 是把字典打散. 字典的key作為引數的名字, 字典的值作為引數的值傳遞給形參

# 在形參上

# 1. 位置引數

# 2. 預設值引數

# 3. 動態引數

# 1. *args 位置引數的動態傳參. 系統會自動的把所有的位置引數聚合成元組

# 2. **kwargs 關鍵字的動態傳參. 系統會自動把所有的關鍵字引數聚合成字典

# 3. def func(*args, **kwargs): 無敵傳參

# 4. 順序: 位置引數, *args, 預設值, **kwargs

# 5. 在使用的時候, 可以任意的進行搭配

# 4. 在實參上. *, **表示的打散. 在形參. *,** 表示聚合

2. 作用域

命名空間:

1. 內建

2. 全域性

3. 區域性

作用域:

1. 全域性作用域: 內建+全域性

2. 區域性作用域: 區域性

globals() 檢視全域性作用域中的內容

locals() 檢視當前作用域中的內容

# 最開始會開闢乙個自己的命名空間- 內建命名空間

# a = 10

# print(a)

# # 直接在py檔案乙個層面上是全域性命名空間

# def func():

# hasakey = 10

# # 在函式內部屬於區域性命名空間

# func()

# 載入順序: 內建 => 全域性 => 區域性

# 取值順序: 區域性 => 全域性 => 內建

# a = 10 # 全域性

# def func():

# # a = 20

# print(a)

## func()

# 作用域: 變數或者函式的宣告週期

# 全域性作用域: 全域性命名空間+內建命名空間

# 區域性作用域: 區域性命名空間

# a = 10 # 全域性

# def func():

# liuwei = "劉偉"

# 1. globals() 檢視全域性作用域中的所有內容

# qiao = "喬峰"

# def 抗收音機():

# bgm = "難念的經"

# print("娃哈哈")

# print(locals())

# 抗收音機()

# # print(globals()) # 檢視全域性作用域中的內容

# # print(locals()) # locals()檢視的是當前作用域中的內容

3. global nonlocal

global: 在區域性引入全域性變數

nonlocal: 在區域性, 引入離他最近的那一層的變數

關於函式的巢狀

# def func1():

# print("我是func1")

## def func2():

# print("我是func2")

# func1()

## def func3():

# func2()

# print("我是func3")

# func3()

# 這樣的**不是巢狀. 互相呼叫

# 函式可以互相巢狀

# def outer():

# def inner():

# print("我是內部")

# print("我是外部")

# inner()

## outer()

# def outer():

# print("我是外面的")

# def inner_1():

# def inner_2():

# print("我是裡面的2")

# inner_2()

# print("我是裡面的1")

# inner_1()

# print("我是外面的收尾")

## outer()

# a = 10

# def func():

# global a #表示在當前作用域中的使用的a是全域性中的變數

# a = 20 # 所有的a都是外面的了

# print(a) # 現在只有看的權利

## print(a) # 10

# func() # 20

# print(a) # 20

# def outer():

# a = 10

# def inner():

# nonlocal a # 找的是區域性當中, 離他最近的上層的那個變數

# a = 20

# print(a)

# print(a) # 10

# inner() # 20

# print(a) # 20

# outer()

# a = 1

# def fun_1():

# a = 2

# def fun_2():

# nonlocal a

# a = 3

# def fun_3():

# a = 4

# print(a)

# print(a)

# fun_3()

# print(a)

# print(a)

# fun_2()

# print(a)

# print(a)

# fun_1()

# print(a)

# global 引入全域性變數, 可以定義全域性變數

# nonlocal 引入區域性中離他最近的外層變數

# def func():

# global a # 沒有也得有. 自動幫你建立

# a = 20

## func()

# print(a)

小學生都能學會的python 列表

小學生都能學會的python 列表 1.什麼是列表 list 能裝東西的東西 列表中裝的資料是沒有限制的,大小基本上是夠用的 列表使用來表示。在列表中每個元素與元素之間用逗號隔開 有索引和切片 start,end,step 2.增刪改查 1.增加 2.刪除 remove pop clear del ...

小學生都能學會的python 深淺拷貝

小學生都能學會的python 深淺拷貝 join 把列表中的每一項用字串拼接起來 lst 汪峰 吳君如 李嘉欣 陳慧琳 關之琳 遍歷列表.把列表中的每一項用 做拼接 s join lst 把列表轉化成字串 print s s1 汪峰 吳君如 李嘉欣 陳慧琳 關之琳 ls s1.split 把字串轉化...

小學生都能看懂的數字dp

數字 dp 歸為計數 dp 通常需要統計乙個區間 l,r 內滿足某些限制條件的個數 數字dp其實很久前就知道了,也做過幾道和其他演算法混在一起的題目,其實通過手玩是能做的 但畢竟是種演算法,還是系統學下比較好 節省手玩時間 p2602 zjoi2010 數字計數 求 l,r 間,0 到 9 在數字上...