# 用def定義新函式
def add(x, y):
print("x is {} and y is {}".format(x, y))
return x + y # 用return語句返回
# 呼叫函式
add(5, 6) # => 印出"x is 5 and y is 6"並且返回11
# 也可以用關鍵字引數來呼叫函式
add(y=6, x=5) # 關鍵字引數可以用任何順序
# 我們可以定義乙個可變引數函式
def varargs(*args):
return args
varargs(1, 2, 3) # => (1, 2, 3)
# 我們也可以定義乙個關鍵字可變引數函式
def keyword_args(**kwargs):
return kwargs
# 我們來看看結果是什麼:
keyword_args(big="foot", loch="ness") # =>
# 這兩種可變引數可以混著用
def all_the_args(*args, **kwargs):
print(args)
print(kwargs)
"""all_the_args(1, 2, a=3, b=4) prints:
(1, 2)
"""
# 呼叫可變引數函式時可以做跟上面相反的,用*展開序列,用**展開字典。
args = (1, 2, 3, 4)
kwargs =
all_the_args(*args) # 相當於 foo(1, 2, 3, 4)
all_the_args(**kwargs) # 相當於 foo(a=3, b=4)
all_the_args(*args, **kwargs) # 相當於 foo(1, 2, 3, 4, a=3, b=4)
# 函式作用域
x = 5
def setx(num):
# 區域性作用域的x和全域性域的x是不同的
x = num # => 43
print (x) # => 43
def setglobalx(num):
global x
print (x) # => 5
x = num # 現在全域性域的x被賦值
print (x) # => 6
setx(43)
setglobalx(6)
# 函式在python是一等公民
def create_adder(x):
def adder(y):
return x + y
return adder
add_10 = create_adder(10)
add_10(3) # => 13
# 也有匿名函式
(lambda x: x > 2)(3) # => true
# 內建的高階函式
map(add_10, [1, 2, 3]) # => [11, 12, 13]
filter(lambda x: x > 5, [3, 4, 5, 6, 7]) # => [6, 7]
# 用列表推導式可以簡化對映和過濾。列表推導式的返回值是另乙個列表。
[add_10(i) for i in [1, 2, 3]] # => [11, 12, 13]
[x for x in [3, 4, 5, 6, 7] if x > 5] # => [6, 7]
往期文章
基本資料型別 (六、七):模組、高階用法
基本資料型別 (五):類
基本資料型別 (三)流程控制和迭代器
基本資料型別 (二)變數和集合
基本資料型別(一). 原始資料型別和運算子
基本資料型別
列舉 定義列舉型別 enum season 定義兩個列舉變數 enum season mylove yourlove 為兩個列舉變數賦值 yourlove fall mylove winter 把列舉值當成無符號整數執行輸出 nslog fall 的值 u fall 3 nslog winter 的...
基本資料型別
建立資料庫 create database database name 顯示所有資料庫 show databases 選擇使用那個資料庫 use database name 刪除資料庫 drop database database name 檢視自己mysql資料庫支援什麼儲存引擎 show eng...
基本資料型別
整型int 整數,在目前絕大多數機器上佔4個位元組。tc環境中是2個位元組 單精度實型float 單精度浮點數,一般是4個位元組長 雙精度實型double 雙精度浮點數,一般是8個位元組長 字元型char 字元,一般是1個位元組長 用來表示256個ascii字元,或者0 255的整數 列舉型enum...