python学习笔记3:函数和参数
admin
2023-07-26 09:40:07
0次

函数

函数的参数和返回值

  • 形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参,下例中的peison
  • 实参(实际参数): 在调用函数的时候输入的值:下例中的明月
def hello(person):
    print("{0}, 你肿么咧".format(person))
    print("Sir, 你不理额额就走咧")

p = "明月"
hello(p)
  • 返回值: 返回函数的执行结果:return
    • 如果没有return,默认返回一个None
    • 函数一旦执行return语句,则无条件返回,函数后面的语句不在执行:下例中aaa不打印,后面的return语句不执行
    def hello(person):
    print("{0}, 你肿么咧".format(person))
    return "哈哈,我提前结束了"
    print("aaa")
    return "我已经跟{0}打招呼了,{1}不理我".format(person, person)

p = "LiYing"
rst = hello(p)
print(rst)

参数

  • 参数参考资料
  • python参考资料: headfirst python -> 零基础入门学习python(小甲鱼),本讲义参考的是流畅的python-->习题-->后期可以考虑腾讯公开免费课
  • 参数分类
    • 普通参数:name,list
    • 默认参数: name="none",addr="noaddr"
    • 关键字参数:指定参数传输的位置,使用关键字参数,可以不考虑参数位置,多一个变量做中转站: age=a, name=n, addr=addr
    • 收集参数: *args,**kwargs
def stu_key(name="No name", age=0, addr="No addr"):
    print("I am a student")
    print("我叫 {0}, 我今年 {1}岁了, 我住{2}".format(name, age, addr)) 
n = "jingjing"
a = 18
addr = "我家"
# 如果是普通参数,只按照位置传递,容易出错
stu_key(age=a, name=n, addr=addr)

收集参数

  • 把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
  • 语法

    def func(*args,**kwargs):
        func_body
        按照list使用方式访问args得到传入的参数
    
    调用:
    func(p1, p2, p3, .....)
  • 参数名args不是必须这么写,但是推荐
  • 收集参数可以和其他参数共存
  • *args:表示可以使用任意参数,实际是一个tuple
  • **keyword:把关键字参数按字典格式存入收集参数,类型是dict
def stu( **kwargs):
    # 在函数体内对于kwargs的使用不用带星号
    print("Hello 大家好,我先自我介绍一下:")
    print(type(kwargs))
    # 对于字典的访问,python2 和python3有区别
    for k,v in kwargs.items():
        print(k, "---", v)    
stu(name="liuying",  age=19, addr="北京大通州区", lover="王晓静", work="Teacher")
stu(name="周大神")

收集参数混合调用的顺序问题

  • 收集参数,关键字参数,普通参数可以混合使用,但要注意参数位置,否则报错
  • 使用规则就是,普通参数和关键字参数优先
  • 定义的时候一般找普通参数,关键字参数,收集参数tuple,收集参数dict
def stu(name, age, *args, hobby="没有", **kwargs):
# 调用的不同格式
stu(name, age)
stu(name, age, hobby="游泳")
stu(name, age, "王晓静", "刘石头", hobby="游泳", hobby2="烹饪", hobby3="跟不同女生聊天")
#以下执行报错
stu(name, age, "王晓静", hobby="游泳", hobby2="烹饪", hobby3="跟不同女生聊天", "刘石头")

收集参数的解包问题

  • 把参数放入list或者字典中,直接把list/dict中的值放入收集参数中
  • *args用一个*号,**kwargs用两个*号
    def stu(*args):
    l = ["liuying", 19, 23, "wangxiaojing"]
    # 此时,args的表示形式是字典内一个list类型的元素,即 arg = (["liuying", 19, 23, "wangxiaojing"],)
    # 很显然跟我们最初的想法违背
    # 此时的调用,我们就需要解包符号,即调用的时候前面加一个星号
    stu(*l)

传值和传地址的区别

  • 对于简单的数值,采用传值操作,即在函数内对参数的操作不影响外面的变量
  • 对于复杂变量,采用传地址操作,此时函数内的参数和外部变量是同一份内容,
  • 任何地方对此内容的更改都影响另外的变量或参数的使用

函数文档

  • 函数的文档的作用是对当前函数提供使用相关的参考信息
  • 文档的写法:

    • 在函数内部开始的第一行使用三引号字符串定义符
    • 一般具有特定格式
  • 文档查看
    • 使用help函数,形如 help(func)
    • 使用__doc__, 参看案例
      def stu(name, age):
      '''
      这是文档的文字内容
      :param name: 表示学生的姓名
      :param age: 表示学生的年龄
      :return: 此函数没有返回值
      '''
      pass
      print(help(stu))
      print("*" * 20)
      print(stu.__doc__)

      输入结果如下:

Help on function stu in module __main__:

stu(name, age)
    这是文档的文字内容
    :param name: 表示学生的姓名
    :param age: 表示学生的年龄
    :return: 此函数没有返回值

None
********************

    这是文档的文字内容
    :param name: 表示学生的姓名
    :param age: 表示学生的年龄
    :return: 此函数没有返回值

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...