1⃣️ 模块
a. random
1 importrandom2
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 importstring2
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 defis_float(num):2 num =str(num)3 if num.count('.') == 1:4 left,right = num.split('.')5 if right.isdigit() andleft.isdigit():6 returnTrue7 elif left.startswith('-') and left[1:0].isdigit() andright.isdigit():8 returnTrue9 returnFalse10
11 whileTrue:12 num = input('输入一个小数:')13 ifis_float(num):14 print('是小数')15 else:16 print('不是小数')
上面只是大体介绍了函数,下面具体写一下函数里面的东西
1. 函数的参数类型:
- 必填参数:没有默认值,不填会报错
- 默认值参数:设置默认值,不填会使用默认值
- 可变参数:*agrs,即不定长参数,不是必填参数,函数有时候不确定会有多少入参(比如一个求和函数),这时使用 *args 即可
- 关键字参数:**kwargs ,不是必填参数,输入的效果相当于字典,格式为:
def info(name,age,**kwargs):passinfo('jiaolf',18,'口红':3,'面膜':5) #相当于调用时给参数备注了具体信息
在调用函数时,如果前面带有函数定义时用的形式参数的名字,例如上面的“age=18”,就可以不必在意传参顺序,否则必须一一对应,当前面的参数带有了参数名时,后面必须带有,反之不必然。
扩展:作为补充,引入一个“解包”的概念,具体应用如下
2.变量
变量分为全局变量和局部变量,定义如下:
全局变量:都可以用的变量(建议少用,因为会一直占用内存,且容易被他人修改)
局部变量:函数内定义的变量
在函数内,如果不声明,那么与全局变量同名的变量实际上是局部变量。函数内全局变量的声明方式:
int numdefcount(a,b):globalnum
num= a+breturn 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
冒号前相当于入参,冒号后为返回值,以下为简单应用:
deftest(a,b,func):
result=func(a,b)returnresult
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']defadd_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]defjudge(score):return score>=60result=list(fileter(judge,stu_score))print(result)
6. 枚举函数
作用:把某个可循环的对象取到下标和元素
1 l = ['lucy','lily','moco','hm','zara']2 for index,i inenumerate(l):3 print('编号%s -> %s'%(index,i))
结果: