python 函数,内置函数

1.函数

1.1  定义函数

·函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()

·任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

·函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

·函数内容以冒号起始,并且缩进。

·return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

1.2  函数参数

【python 传参 传递的是一个引用】

·普通参数

def userinfo(name,userid):
    print(name,userid)
userinfo('xx',20)

#xx 20

·默认参数(默认参数必须放在参数列表最后)


def userinfo(name,userid,status='ok'):
    print(name,userid,status)
userinfo('xx',20)
userinfo('xx',20,'error')
#xx 20 ok
#xx 20 error

·动态参数     * 默认将传入的元素,全部放在元祖中  ** 默认将传入的元素,全部放到字典里

def userinfo(*args):       #参数是元祖或者列表
    print(args)
l_list = [1,2,3]
userinfo(l_list)
userinfo(*l_list)
#([1, 2, 3],)
#(1, 2, 3)
def userinfo(**args):        #参数为字典
    print(args)
dic = {"name":'xx',"age":20}
userinfo(name='xx')
userinfo(**dic)
userinfo(name='xx',age=30)

#{'name': 'xx'}
#{'age': 20, 'name': 'xx'}
#{'age': 30, 'name': 'xx'}
def userinfo(*args,**kwargs):        #万能参数   
    print(args,kwargs)
dic = {"name":'xx',"age":20}
l_list = [1,2,3]
userinfo(*l_list,**dic)
#(1, 2, 3) {'name': 'xx', 'age': 20}            

1.3  变量作用域

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加 。

想要改变函数外的全局变量,需要加global参数。

AGE =20
def userinfo():
    AGE = 18
    print(AGE)
userinfo()
print(AGE)
#18
#20
AGE =20
def userinfo():
    global AGE   #改变全局变量
    AGE = 18
    print(AGE)
userinfo()
print(AGE)
#18
#18

虽然函数内不能改变全局变量的值,但是假如变量为列表、字典等,可以修改元素,但是不能删除重建

Info = [1,2]
dict_info = {
    "age":18,
    "name":"caesary",
}

def testfun():
    Info.append(3)
    dict_info["addr"] = "HLJ"
    print(Info)
    print(dict_info)

testfun()
print(Info)
print(dict_info)
#[1, 2, 3]
#{'age': 18, 'name': 'caesary', 'addr': 'HLJ'}
#[1, 2, 3]
#{'age': 18, 'name': 'caesary', 'addr': 'HLJ'}

2.内置函数

abs()  函数返回(数字)的绝对值

all()  如果()里的所有元素不为0、''、False,all()返回True,否则返回False

>>> 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()  如果()里的任何元素不为0、''、False,any()返回True。如果iterable为空,返回False

>>> 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()  十进制转二进制
oct() 十进制转八进制
hex() 十进制转十六进制
print(bin(10),oct(10),hex(10))
#0b1010 0o12 0xa

bytes(字符串,编码格式)

一个字节8位

utf-8 一个汉字3个字节

gbk   一个汉字2个字节

n = '测试'
m = bytes(n,encoding="utf-8")
m1 = bytes(n,encoding="gbk")
print(m,m1)
print(str(bytes(n,encoding="utf-8"),encoding="utf-8"))   #字节转化成字符串
#b'\xe6\xb5\x8b\xe8\xaf\x95' b'\xb2\xe2\xca\xd4'
#测试

format()       格式化输出

s1 = 'i am {0},age {1}'.format('xx',20)
print(s1)
s2 = 'i am {0},age {1}'.format(*['xx',21])
print(s2)
s3 = 'i am {name},age {age}'.format(name='xx',age=22)
print(s3)
dic = {'name':'xx','age':23}
s4 = 'i am {name},age {age}'.format(**dic)
print(s4)
#i am xx,age 20
#i am xx,age 21
#i am xx,age 22
#i am xx,age 23

 

 
posted @ 2016-05-28 17:05  星星by~  阅读(350)  评论(0编辑  收藏  举报