本節主要有:
tips:如果不想改變原資料,傳遞引數時盡量用其副本
# 函式也是乙個物件
# 物件是記憶體中專門用來儲存資料的一塊區域
# 一切皆物件
# 函式的引數:
defrt
( a )
:print
('zzzz'
, a )
rt(3
)def
sum(a,b,c)
:print
(a*b*c)
sum(4,
5,8)
# 定義形參時可以指定默值,沒有傳遞對應引數,預設值生效
deffn
( a , b=
10, c=20)
:print
(a,b,c)
fn(a=
1, c=2)
fn(1,2
,5)# 實參的傳遞方式
# - 位置引數
# 形參和實參位置一一對應
# - 關鍵字引數
# 直接根據引數名傳遞引數
# 混合使用時,必須將位置引數寫在前面
fn(3
,c=1
)# 傳遞引數時,解析器不會檢查實參的型別,實參可以是任意型別的資料
defp()
:print
('hello'
)def
p1(a)
:# a當作乙個函式物件的引數
print
('a ='
, a)
a()p1(p)
deffn1
(a):
# 在方法中,通過形參修改物件時,會影響到所有指向該物件的變數
a[0]=
100print
('a='
,a)c =[1
,2,3
]fn1(c.copy())
# 用c的副本傳遞給a , c不會受到影響
print
('c='
,c)fn1(c[:]
)# 用c的切片傳遞給a , c不會受到影響
print
('c='
,c)fn1(c)
print
('c='
,c)# 不定長引數
# 在定義函式時,可以在形式引數前加上乙個*,
# 它將會將傳遞的實參儲存到乙個元組tuple中(裝包)
deffn2
(*nums)
:print
('nums ='
,nums,
type
(nums)
)def
fn3(
*nums)
: result =
0for n in nums :
result+=n
print
(result)
fn2(1,
2,3,
4,5,
6)fn3(1,
2,3,
4,5,
6)# 可變引數*b不是必須寫在最後,但它後面的實參傳遞時,必須以關鍵字形式傳遞
deffn
(a,*b,c)
:print
('a ='
,a)print
('b ='
,b)print
('c ='
,c)fn(1,
2,3,
4,c=5)
# 如果形參開頭只寫乙個*,則所有的實參傳遞時,必須以關鍵字形式傳遞
deffn(*
,a,b,c)
:print
('a ='
,a)print
('b ='
,b)print
('c ='
,c)fn(a=
1,b=
2,c=3)
# *形參只能接收位置引數
# **形參可以接收其他剩餘的關鍵字引數,儲存到乙個字典中,
# 字典key是引數的名字,value是引數的值
# **形參只能放在所有引數的最後
deffn3
(a,b,
**c)
:print
('a ='
,a)print
('b ='
,b)print
('c ='
,c)fn3(
1,d=
4,b=
2,c=3)
# 引數的解包
deffn4
(a,b,c)
:print
('a ='
,a)print
('b ='
,b)print
('c ='
,c)# 在傳遞實參時在序列前加上*,可以對序列進行解包後依次傳遞引數
t =(4,
5,6)
fn4(
*t)# 字典需要用**,字典中的key要與形式引數一一對應,傳遞的是value
d =fn4(
**d )
Python學習筆記14 模組
在python中所有的模組都被加入到了sys.path中,用下面的方法可以看見模組的位置。import sys import pprint pprint.pprint sys.path usr local python2.7 lib python27.zip usr local python2.7 ...
Python學習筆記(14)random模組
一 random模組 主要用來生成一些隨機數,一般有randint 隨機生成範圍內乙個整數 uniform 隨機生成範圍內乙個小數 choice 從給定的資料中隨機選擇乙個 sample l,num 從乙個list中隨機選擇num個數字並返回到乙個新的list中 import random numb...
Perl 學習筆記 14
system是呼叫shell的最簡單的方法。例如 system ls l home system date exec是 呼叫後不用管 的system。使用 env獲得環境變數。例如 env home rootbeer bin env path delete env my make result sy...