标签: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(‘3x‘)
... )
<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
\>>>
标签:python 函数
原文地址:http://blog.51cto.com/2168836/2103618