python函数的定义

#封装代码 函数:代码的复用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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值