#封装代码 函数:代码的复用help(print) 重复定义某个函数等于重写 后面的生效
def 函数名(参数列表)
函数体
return 值
def print(*args(可变长度),end="\n"):
#实现打印
#返回值 没有返回值(None)或者任意多个值
def stuinfe(name,age,sex):
print("姓名是:",name," 年龄是:",age," 性别是:",sex)
stuinfe("xfb","20","female") 实际参数形式一一对应
stuinfe(age="20",sex="female",name="xfb")关键字参数形式调用
print(1,2,3) print(1,2,3,sep=",")
#变量作用域LEGB:全局变量 局部变量local Enclosing上层作用域 global全局 built-in内置
__name__ = "xfb"
x = 10
def func1():
global x#声明x使用全局变量 只有自增会变 nonlocal 不使用
x =x+1
print(x)
func1()
def func1(arg):
return arg**2
lst1 = [1,2,3,4,5]
#高阶函数:函数作为参数
# result = map(func1,lst1)#把lst1(必须为可迭代)里面每一个值放入func1函数里面
# print(list(result))
# result = map(lambda x:x**2,lst1)#语法:lambda 参数列表:返回值 匿名函数(没有名字的函数) 和上面结果一样
函数定义的形参类型
必选参数(调用是必须给参数)stuinfe(name="xfb",age="20")TypeError: stuinfe() missing 1 required positional argument: 'sex'
默认参数(如果没有传参数使用默认值比如print 是空格)
def stuinfe(name,age,sex):#默认参数必须放在最后 必选在默认前面on-default argument follows default argument
print("姓名是:",name," 年龄是:",age," 性别是:",sex)
stuinfe("xfb","20")
stuinfe("xfb","20","male")
stuinfe(name="xfb",age="20")
return 把结果返回 或这直接在函数中处理完结果不需要返回
def huiwen(s1):作业 判断回文
if s1 == s1[::-1]:
print("ture")
else:
print("false")
huiwen(s1 = str.upper(input("请输入字符串:")))
#可变长位置参数()
def my(*args):#*args打包
print(args)
print(type(args))#tuple
my(1,2,3)
# 可变长关键字参数
def mu(**kwargs):#keyword arguments
print(kwargs)#dict字典
mu(a=1,b=2,c=3)
yuanzu = (1,2,3,4,5,6)
a, *b,c = yuanzu
#print(a,b,c)
#四种参数同时存在 顺序:必选 可变长位置参数 > 默认参数 可变长关键字参数
python函数传参传的是值(实参的值给形参 形参修改 不影响实参)还是引用 python引用机制 传值 地址会变 传引用 同一个地址 传地址 形参修改实参也变
def test1(a):
a = a+1#值传递
a += 1#值传递
print("a:",a)
a = 100
test1(a)
test1(a)
print(a)
#a+=b引用传递 一直在同一个地址 如果是可变对象 会在源地址改 如果是不可变对象会创建新数据即新的内存空间
def test2(a):
a=a+[1]
print("a",a)
a = [1,2,3]
test2(a)
test2(a)
print(a)
def test2(a):
a.append(1)
print("a",a)
a = [1,2,3]
test2(a)
test2(a)
print(a)#可变对象 字典列表集合
def test2(a):
a += (1,)
print("a",a)
a = (1,2,3)
test2(a)
test2(a)
print(a)
作业:编写一个函数,求多个数的最大值
默认生成长度为6的数字验证码,可以传参并修改长度
def yanzhengma(length=6):
import random
import string
a = string.digits+string.ascii_letters
for i in range(length):
code = ''.join(random.choices(a,k=6))
print(code)
yanzhengma(6)
def max1(lst1):
for i in range(len(lst1)-1):
c = 0
if lst1[i] <= lst1[i+1] :
c = lst1[i]+1
else:
c = lst1[i]
print(c)
max1([1,4,5,3,10,8])
print(dir(random))
编写函数实现:密码复杂度验证 长度8-18之间 (不合格) 只用了一种(字母 数字 字符) 弱 使用任意两种 中 使用三种强 适当给出提示
import os
print(os.listdir("../"))
def fuzadu(pwd):
import string
if len(pwd) < 8 or len(pwd) > 18:
print("密码长度不合格")
return
if pwd.isdigit
print("密码强度弱")
return
if
print("密码强度中")
return
print("密码强度合格")
fuzadu(pwd = input("请输入密码:"))
print(dir(str))
lst2 = [1,2,3,4,5]#将lst1和lst2合并
result = map(lambda x,y:x+y,lst1,lst2)
print(list(result))