1⃣️ 模块
a. random
1 import random 2 3 num = random.randint(1,999) #生成一个1~999的随机整数 4 ran_list = random.sample('0123456789',6) #随机取几个(6),返回的是一个list,前面是一个字符串 5 6 l=[1,2,3,4,5,6,7] 7 random.shuffle(l) #洗牌功能,改变原有的值 8 print(random.choice(string.digits)) #随机取一个值 9 print(random.uniform(1,999999))#随机小数
三个功能,一个 random.randint, random.sample, random.shuffle。应用在生成随机码时很好用。除此之外 random.choice 和 random.uniform 可以用。
b. string
1 import string 2 3 print(string.digits) #所有的整数 4 print(string.ascii_lowercase)#小写字母 5 print(string.ascii_uppercase) #大写字母 6 print(string.ascii_letters)#大写字母+小写字母 7 print(string.punctuation) #所有的特殊符号
返回的是一个字符串,结合 random 的方法在生成随机码时好用。
2⃣️ 函数
为避免代码的重复性,可以把实现某一功能的一堆代码定义为一个函数,使用时只需要调用函数。
涉及概念:
- 形式参数:定义函数时定义的参数,但有的函数也不需要传参
- 实际参数:实际调用函数时传入的参数
- 返回值:函数有返回值时,调用函数后需要有一个变量来接收这个返回值;函数一旦遇到 return,立即结束。返回值有多个时,要么一个变量接收(一个接收时,返回的是元组),要么接收个数同返回值个数。
- 局部变量:在函数里定义的变量都是局部变量,只能用在函数里
- 默认值参数:def register(name,sex='女') 这里,name 是必须要传的参数,sex 就是一个默认值参数,调用函数时如果没给这个值,那就是默认给‘女’
练习:写一个函数,用来判断传入的数字是否是小数
1 def is_float(num): 2 num = str(num) 3 if num.count('.') == 1: 4 left,right = num.split('.') 5 if right.isdigit() and left.isdigit(): 6 return True 7 elif left.startswith('-') and left[1:0].isdigit() and right.isdigit(): 8 return True 9 return False 10 11 while True: 12 num = input('输入一个小数:') 13 if is_float(num): 14 print('是小数') 15 else: 16 print('不是小数')
上面只是大体介绍了函数,下面具体写一下函数里面的东西
1. 函数的参数类型:
- 必填参数:没有默认值,不填会报错
- 默认值参数:设置默认值,不填会使用默认值
- 可变参数:*agrs,即不定长参数,不是必填参数,函数有时候不确定会有多少入参(比如一个求和函数),这时使用 *args 即可
- 关键字参数:**kwargs ,不是必填参数,输入的效果相当于字典,格式为:
def info(name,age,**kwargs): pass info('jiaolf',18,'口红':3,'面膜':5) #相当于调用时给参数备注了具体信息
在调用函数时,如果前面带有函数定义时用的形式参数的名字,例如上面的“age=18”,就可以不必在意传参顺序,否则必须一一对应,当前面的参数带有了参数名时,后面必须带有,反之不必然。
扩展:作为补充,引入一个“解包”的概念,具体应用如下
2.变量
变量分为全局变量和局部变量,定义如下:
全局变量:都可以用的变量(建议少用,因为会一直占用内存,且容易被他人修改)
局部变量:函数内定义的变量
在函数内,如果不声明,那么与全局变量同名的变量实际上是局部变量。函数内全局变量的声明方式:
int num def count(a,b): global num num = a+b return num
3.一些内置函数
以上,个人认为常用的有 sorted()、exec()、eval()
a. sorted() 一个可以排序的方法,不改变原有值,所以可以用于 list, str, dic... 因此用的时候需要有变量接收它的返回结果,并且要注意⚠️的是,它的返回值是一个列表。
b. exec() 用于执行代码片段。
c. eval() 用于执行简单的代码片段,可以用于:把输入的 str 转换为类似于在 python 中的语句。它的效果也是,相当于把对象放在python中运行。
4. 匿名函数 lambda
格式: sum = lambda x,y:x+y
冒号前相当于入参,冒号后为返回值,以下为简单应用:
def test(a,b,func): result = func(a,b) return result func_new = input('请输入一个匿名函数:') #需要把输入的当作表达式 func_new = eval(func_new) num = test(11,22,func_new) print(num)
5. map 和 filter
a. map
map 的作用是,循环调用函数;map 会把函数每一次调用的返回值保存,最后返回
stus = ['abby','lily','lucy','lucky'] def add_prx(name): return 'taobao_%s'%name result = list(map(add_prx,stus)) #map使用时,括号内前面为函数名,注意函数名不能加(),后面为要循环的内容 print(result)
b. filter
filter 作用是,循环调用函数;过滤传入的参数,函数结果返回 True 则保存,False 则不保存
stu_score = [60,50,70,30,40,90,80] def judge(score): return score>=60 result = list(fileter(judge,stu_score)) print(result)
6. 枚举函数
作用:把某个可循环的对象取到下标和元素
1 l = ['lucy','lily','moco','hm','zara'] 2 for index,i in enumerate(l): 3 print('编号%s -> %s'%(index,i))
结果: