一. 算數運算
- * 代表乘法
- ** 代表乘方
x = 2
y = x * x;
# y: 4
z = x ** 2;
# z: 4
二. 函數形參
*args 和 **kwargs都可以傳遞不定數量的參數。
python有以下四種參數傳遞方式
(1) function(a, b, c): 直接將實參賦予行參,根據位置做匹配
(2) function(a = 1, b = 2, c = 3): 根據鍵值對的形式做實參與行參的匹配,通過這種式就可以忽略了參數的位置關係,直接根據關鍵字來進行賦值
# function(2, 3) ==> function(a = 2, b = 3, c = 3) 可省略後部分參數
# function(c = 1, b = 2, a = 3) ==> function(a = 3, b = 2, c = 1) 可改變參數順序
(3) function(*args): 可以傳入任意個參數,這些若干參數都被放到了tuple元組中賦值給行參args
# 但本質上需要保證參數的順序
def test(a, b, c):
return a + b + c
input = (a, b, c) # 本質上傳遞一個tuple,需要滿足參數數量的限制
test(*input)
(4) function(**kwargs): 以鍵值對字典的形式向函數傳參,沒有位置和參數數量的限制
def test(a, b, c):
return a + b + c
input = {"a": 2, "b": 2, "c": 2}
test(**input)
python傳遞參數的方式有兩種
- 位置參數 (positional argument)
- 關鍵詞參數 (keyword argument)
*args 表示任何多個無名參數,它本質是一個 tuple
def fun(name, *args):
print('你好:', name)
for i in args:
print("你的寵物有:", i)
fun("Geek", "dog", "cat")
# 你好: Geek
# 你的寵物有: dog
# 你的寵物有: cat
**kwargs 表示關鍵字參數,它本質上是一個 dict
def fun(**kwargs):
for key, value in kwargs.items():
print("{0} 喜歡 {1}".format(key, value))
fun(Geek="cat", cat="box")
# Geek 喜歡 cat
# cat 喜歡 box
如果同時使用 *args 和 **kwargs,*args需要放在**kwargs之前
def fun(*args, **kwargs):
print('args=', args)
print('kwargs=', kwargs)
fun(1, 2, 3, 4, A='a', B='b', C='c', D='d')
# args= (1, 2, 3, 4)
# kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}
三. 函數實參
如果函數的形參是定長參數,可利用*args和**kwargs作爲實參,傳遞給函數
def add(a, b, c):
return a + b + c
args = (1, 2, 3)
add(*args)
kwargs = {"a": 1, "b": 2, "c": 3)
add(**kwargs)