python 函數

自定義函數

定義和使用
def func_name(param1,param2....):
func_block
函數返回值可是是零個或任意多個,在函數體中用return關鍵字返回
#!/usr/bin/env python
def add1(x,y=10):
return x+y

if name=='main':
print "add2+3:",add1(2,3)
print "add-4:",add1(-4)
[root@SN28 opt]# ./p.py
add2+3: 5
add-4: 6

變長參數
變長參數的函數即參數個數、參數類型不定的函數。Python中只有兩種類型的變長函數。
● 元組Tuple變長參數:以一個*號開頭的代表着一個任意長度的元組(tuple),可以接收連續一串參數,如上面代碼裏傳的是1,2,3,你可以更多。
● 字典Directory變長參數:以兩個*號開頭的代表着一個字典,參數的形式是“key=value”,接受連續任意多個參數。
\>>> def funcD(a,b,*c):
... print a
... print b
... print c
...
\>>> funcD(1,2,3,4,5)
1
2
(3, 4, 5)
\
\>>> def func(a,**b):
... print a
... for x in b:
... print x+":"+str(b[x])
...
\>>> func("book",c='hello',b=8,d='option')
book
c:hello
b:8
d:option
\>>>

匿名函數:
匿名函數是指一類無須定義標識符(函數名)的函數或子程序,一般用於只在代碼一次函數引用的場合
Python使用lambda語法定義匿名函數,只需要表達式而無需聲明。一種單行的小函數。
定義lambda函數的形式如下:labmda 參數:表達式,lambda函數默認返回表達式的值。
lambda [arg1,arg2...argN]:expression
可以將其賦值給一個變量。lambda函數可以接受任意個參數,包括可選參數,但是表達式只有一個:
\>>> g = lambda x, y: x*y
\>>> g(3,4)
12
\>>> g = lambda x, y=0, z=0: x+y+z
\>>> g(1)
1
\>>> g(3, 4, 7)
14
也能夠直接使用lambda函數: 需要用兩對小括號
\>>> (lambda x,y=0,z=0:x+y+z)(3,5,6)
14

\>>> import datetime
\>>> datetime.datetime.now()
datetime.datetime(2017, 12, 31, 17, 11, 2, 316799)

內建函數

all(i) i中所有的元素都是True,纔會返回True
any(i) i中所有的元素只要有一個是True就會返回True
bool(x) x如果是False、None或是空值就返回False
abs(x) 返回x的絕對值
pow(x,y) 計算x 的y 次方
divmod(a,b) 返回a/b的商和餘數,以tuple的方式返回
eval(e) 求字符串類型的表達式e的值
round(n) 數值n四捨五入,去整數
bin(n) 把數值n轉換爲二進制數字
hex(n) 把數值n轉換爲十六進制數字
oct(n) 把數值n轉換爲八進制數字
float(n) 把變量n轉換成浮點數類型
str(n) 把變量n轉換陳爲字符串類型
int(a) 把變量a轉換成整數類型
chr(n) 取得第n個ASCII碼的字符
len(a) 計算變量a的長度,但a必須是可以計算長度的類型
max(a) 返回變量a中最大值的元素
min(a) 返回變量a中最小值的元素
sum(a) 計算變量a中元素的總和
open() 打開文件
print() 輸出函數
format() 字符串格式化符號輸出映像
input(msg) 顯示出信息msg,並要求用戶輸入數據
enumerate(x) 用枚舉的方式,把變量x中的索引值和值取出來,組合成tuple,而x必須像是list,dict這一類具有迭代特性的變量
range(a,b,c) 返回啊開始到b-1、間隔爲c 的序列數字
sorted(a) 把a 的元素排序
frozenset() 用來創建出不能被修改的集合變量
dir(x) 用來檢查x對象可以使用的方法
type(x) 返回變量x的類型

\>>> abs(-45)
45
\>>>
all(iterable)
iterable 元組或列表
如果iterable的所有元素不爲0、''、False或者iterable爲空,all(iterable)返回True,否則返回False;
注意:空元組、空列表返回值爲True,這裏要特別注意。
\>>>all(['a', 'b', 'c', 'd']) # 列表list,元素都不爲空或0
True
\>>> all(['a', 'b', '', 'd']) # 列表list,存在一個爲空的元素
False
\>>> all([0, 1,2, 3]) # 列表list,存在一個爲0的元素
False
\>>> all(('a', 'b', 'c', 'd')) # 元組tuple,元素都不爲空或0
True
\>>> all(('a', 'b', '', 'd')) # 元組tuple,存在一個爲空的元素
False
\>>> all((0, 1,2, 3)) # 元組tuple,存在一個爲0的元素
False
\>>> all([]) # 空列表
True
\>>> all(()) # 空元組
True
any()方法
def any(iterable):
for element in iterable:
if element:
return True
return False
如果都爲空、0、false,則返回false,如果不都爲空、0、false,則返回true。
\>>>any(['a', 'b', 'c', 'd']) # 列表list,元素都不爲空或0
True
\>>> any(['a', 'b', '', 'd']) # 列表list,存在一個爲空的元素
True
\>>> any([0, '', False]) # 列表list,元素全爲0,'',false
False
\>>> any(('a', 'b', 'c', 'd')) # 元組tuple,元素都不爲空或0
True
\>>> any(('a', 'b', '', 'd')) # 元組tuple,存在一個爲空的元素
True
\>>> any((0, '', False)) # 元組tuple,元素全爲0,'',false
False
\>>> any([]) # 空列表
False
\>>> any(()) # 空元組
False
bin()方法
\>>> bin(10)
'0b1010'
\>>> bin(20)
'0b10100'
\>>> bin(2)
'0b10'
\>>>
bool()方法
0 ,"", '',None,False 都爲 False
注意:" " , " " 一個空格以上都爲真
\>>> bool(-10)
True
\>>> bool(0)
False
\>>> bool()
False
\>>> bool(False)
False
\>>> bool(None)
False
\>>> bool(2)
True
\>>>
chr() 方法
chr(i)
參數
i -- 可以是10進制也可以是16進制的形式的數字。
返回值是當前整數對應的ascii字符。
\>>> chr(0x30)
'0'
\>>> chr(0x31)
'1'
\>>> chr(48)
'0'
\>>> chr(49)
'1'
\>>> chr(97)
'a'
\>>>
divmod()
函數把除數和餘數運算結果結合起來,返回一個包含商和餘數的元組(a // b, a % b)。
\>>> divmod(7,2)
(3, 1)
\>>> divmod(8,2)
(4, 0)
\>>>
enumerate()
函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。
enumerate(sequence, [start=0])
參數
sequence -- 一個序列、迭代器或其他支持迭代對象。
start -- 下標起始位置。
返回 enumerate(枚舉) 對象。
\>>> seasons=['Spring','Summer','Fall','Winter']
\>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
\>>> list(enumerate(seasons,start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
\>>>
\>>> i=0
\>>> seq=['one','two','three']
\>>> for element in seq:
... print i,seq[i]
... i+=1
...
0 one
1 two
2 three
\>>> seq=['one','two','three']
\>>> for i,element in enumerate(seq):
... print i,seq[i]
...
0 one
1 two
2 three

eval()方法
\>>> x=7
\>>> eval('3x')
21
\>>> type(eval('3
x')
... )
<type 'int'>
\>>> eval('pow(2,2)')
4
\>>> eval('2+2')
4
\>>> n=81
\>>> eval("n+4")
85
\>>>
float()
\>>> float(1)
1.0
\>>> float(112)
112.0
\>>>
Python2.6 開始,新增了一種格式化字符串的函數 str.format(),它增強了字符串格式化的功能。
基本語法是通過 {} 和 : 來代替以前的 % 。
format 函數可以接受不限個參數,位置可以不按順序。
\>>>"{} {}".format("hello", "world") # 不設置指定位置,按默認順序
'hello world'
\>>> "{0} {1}".format("hello", "world") # 設置指定位置
'hello world'
\>>> "{1} {0} {1}".format("hello", "world") # 設置指定位置
'world hello world'
print("網站名:{name}, 地址 {url}".format(name="教程", url="www.test.com"))

通過字典設置參數

site = {"name": "教程", "url": "www.test.com"}
print("網站名:{name}, 地址 {url}".format(**site))

通過列表索引設置參數

my_list = ['教程', 'www.test.com']
print("網站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必須的
frozenset()
返回一個凍結的集合,凍結後集合不能再添加或刪除任何元素。
\>>> a=frozenset(range(10))
\>>> a
frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
\>>> b=frozenset("Hell word")
\>>> b
frozenset([' ', 'e', 'd', 'H', 'l', 'o', 'r', 'w'])
\>>>
print ()
from future import print_function

for i in range(10):
print ('*',end=" ")
print ()

print 不換行,需要python3 的print ,導入 from future import print_function
在python3.x之前,可以通過在print語句之後加逗號解決
在python3.x之後,可以在print()之中加end=""來解決
print 與 format 結合使用
格式 print ("{}".format(x))
\>>> x="Happy"
\>>> y="New Year"
\>>> print ("I say {} your {}".format(x,y))
I say Happy your New Year
\>>>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章