python(五)函数补充,内置函数,Random函数

1. 可变参数

def   send_message(*args) :在调用这个函数的时候,可以不传参数,也可以传一个参数,也可以传多个参数。只要传参了,就会把参数放进一个元组中。

2. 关键字参数

def  send_message(**kwargs):在调用这个参数的时候,可以不传参数,可以传一个参数,也可以传入多个参数。传入的格式为k=v

3 位置参数,关键字参数混合使用时,需要注意

def myfunc2(name,addr='beijing',*args,**kwargs)

关键字参数后面不能使用位置参数,也就是当位置参数和关键字参数一起时,要把位置参数放在前面,最后在写关键字参数

4  解包

def connect (ip,port,username,password)

info=('196.36.23.22',‘3323’,‘root’,‘123456’)

connect(*info),

在元组,列表,集合,字符串只要数量和变量一致,就能个以一一对应。

字典的话要用connect(**dic)

5 常用的内置函数

print(max([123,423,1,2,3,45,332]))#取最大值
print(sum([123,423,1,2,3,45,332]))#求和
print(divmod(10,3))#余数
print(round(11.222222,2))#取几位小数
l = ['u1','u2','u3']
l2 = ['p1','p2','p3']
print(list(zip(l,l2)))#将两个list和为一个二维数组
print(dict(zip(l,l2)))#将两个list和为一个二维数组
 l = [1,2,34,12,32,98,3221,98,34,532]
print(sorted(l))#排序
print(sorted(l,reverse=True))#降序排序
 print(l)

l2 = [
    ['xiaobai',12],
    ['xiaohei',11],
      ['lisi',98],
    ['wangwu',34]
 ]

 l3 = sorted(l2,key=lambda x:x[-1][-1])#二维数组排序,key是传一个函数名,是指用哪个参数来进行排序
 print(l3)
 def user_key(x):
     return x[-1]
 #key是传一个函数名,由sorted循环排序时去调用该函数
 l4 = sorted(l2,reverse=True,key=user_key)
 print(l4)
l = [1,2,34,12,32,98,3221,98,34,532]
#循环把list的每个参数传给函数,
#根据某个规则来过滤list里的参数
result = filter(lambda x:x>5,l)#输出的是大于5的数
stri = 'fdsfrewrwerwrffdsf'
str_result = filter(lambda x:x!='f',stri)
print(list(str_result))
print(list(result))
#保留函数返回的值,就是循环执行函数
map_result = map(lambda x:x>5,l)#返回的是True或false,返回所有
print(list(map_result))
map_result1 = map(lambda x:str(x).strip().zfill(3),l)#返回所有
print(list(map_result1))

for index,i in enumerate(l,1):#将list转为带下标的二维数组,传1是从1开始,默认从0开始
    print('%s -> %s'%(index,i))
str_code = '''
l = [1,2,34,12,32,98,3221,98,34,532]
map_result1 = map(lambda x:str(x).strip().zfill(3),l)
print(list(map_result1))
print('hhhh')
'''
#让程序自动帮你执行代码,可以执行所有的python代码
#用exec方法有风险,比如执行os.remove()把文件删除等
exec(str_code)

result = eval('{"name":"xiaohei","age":"19"}')#执行python代码,只能执行简单的,定义数据类型和运算
print(result)

 

不常用的内置函数

print(all([1,2,3,4,5,0]))#判断可迭代对象里的值是否都为真
print(any([1,2,3,4,5,0]))#判断可迭代对象里的值是否有一个为真
print(bin(10))#10进制转2进制
print(hex(10))#10进制转成16进制
print(oct(10))#10进制转成8进制
print(chr(33))#数字对应的ascii码
print(ord('v'))#字符对应的ascii码
#python3 默认的字符集是utf-8
#python2 默认的字符集是ASCII
f = open('a.txt','w')
print(dir(f))#打印传入对象的可调用方法
print(locals())#返回局部变量
def fun():
    name = 'abc'
    age = 18
    print(locals())  # 返回局部变量,返回的是一个字典
fun()

print(globals())#返回全局变量,返回的是一个字典

 匿名函数:是个简单的函数,没有名字

f1=lamber x:x+1

print(f1(2))

 

Random函数:

1. 使用Random模块,需要导入 import random

2. 随机生成一个整数:random.randint(1,6):会随机生成一个1-6中的任意一个数

3. 随机生成一个小数:random.uniform(1,10):会随机生成1-10中的任意一个小数

4.random.simple("jkjkjkjk",3):会随机从给出的字符串中取,取几个由后面的数字决定。最后生成的是一个列表。然后用''.join(列表)变成一个字符串

5.random.shuffle(列表) :打乱列表的顺序。俗称洗牌

6. 随机生成小写,大写字母,特殊字符,数字,需要导入:import string

小写字母:string.ascii_lowercase

大写字母:string.ascii_uppercase

字母:string.ascii_letter

特殊字符:string.punctuation

整数数字:string.digits

随机取一个值:random.choice() 里面可以是列表,数字,字母

补充:

当字符不满的时候长度的时候可以填充用的方法是string.zfill(位数)

posted @ 2019-07-09 22:55  测试freshman  阅读(410)  评论(0编辑  收藏  举报