zoukankan      html  css  js  c++  java
  • python系统学习:第三周之函数

    # 函数:如果某个程序中部分代码重复使用率较高,可以将其封装起来,用到的时候就可以去调用这个包,这就叫函数
    # ----------------------第一部分-------------------------
    # 定义
    def sayhi():
    print("hello word!")


    # 调用
    sayhi()


    # ----------------------第二部分-------------------------
    # 定义函数时的括号是用来传参数,参数的作用就是让函数调用适用性更加高
    # 假设设立一个向用户问好的函数
    def goodmorning(name): # 这个name就是我们传入的用户名字
    print("你好,", name)


    # 调用
    goodmorning("牛屎虫")


    # 调用多个参数
    def sign(name, age, sex="男"):
    print(name, age, sex)


    # 调用
    sign("牛屎虫", 25, "女")
    sign("牛屎虫", 25)
    # ----------------------第三部分-------------------------
    # 在sign()函数中,参数是由分类的
    # 定义函数时用到的name、age等属于形参,意为就是占位;调用时的"牛屎虫"等属于实参,意为实际参数
    # 定义函数时,可以指定默认值,这里的sex="男",就是默认值
    # ----------------------第四部分-------------------------
    # 在sign()函数中,没有默认值的参数属于位置参数,就是调用函数时参数位置要对应;如果不想一一对应,就要用到关键参数
    sign(age=16, name="牛屎虫")


    # ----------------------第五部分-------------------------
    # 为了同时给多个人发送问候信息,避免多次调用函数(一个人调一次),需要用到非固定参数
    def say(info, *argv):
    for name in argv:
    print(info, name)


    say("你好:", "lin", "wang", "hile") # *argv 这种写法传进去的是一个元组


    # 第二种方式
    def register(info, *argv, **kwargv): # *argv 这种写法传进去的是一个字典
    print(info, argv, kwargv)


    # 调用
    d = {"wang0": "nan", "lily": "nv"}
    register("hello", "wang", "lily", **d) # 注意调用方式
    register("hello", "wang", "lily", lily="nv")


    # ----------------------第六部分-------------------------
    # 返回值:return 当函数执行完毕,若需要用到执行完毕后的结果,则要用ruturn返回想用到的结果,return意味着函数中止
    def register2(info, name, age):
    print(info, name, age)
    if age > 22:
    print("age is big")
    return False # 定义返回结果
    else:
    print("hello")
    return True # 定义返回结果


    # 调用方法
    ss = register2("hello", "wang", 11)
    print(ss) # 打印调用方法后的输出,发现是符合条件的返回值,如果不设定return,会返回none
    # ----------------------第七部分-------------------------
    # 局部变量与全局变量
    name = "牛屎虫" # 全局变量


    def change_name():
    name = "牛脚臭" # 局部变量
    print(name)


    change_name() # 方法内的name属于局部
    print(name) # 方法内的重新命名,外部的并没有改变



    各种参数的混合运用
    1.a,b,c:单个参数
    2.*a :可变参数
    3.**a:关键字参数 (传入了字典键值对)
    4.*,a,c:命名关键字参数

    # *a  可变参数 元组
    # 求 平方根
    def square(*num):
    sum = 0
    for i in num:
    sum += i * i
    return sum


    print(square(1, 3))


    # **a 关键字参数 传入字典
    # 录如信息
    def stu_list(name, age, **kw):
    return ('name:', name, 'age:', age, 'other:', kw)


    num = {'谁': '出来'}
    print(stu_list('wang', 23, **num))


    # 必选参数、默认参数、可变参数、命名关键字参数和关键字参数 混合使用 一看例子就明白
    def f1(a, b, c=0, *args, **kw):
    return ('a=', a, 'b=', b, 'c=', c, 'args=', args, 'kw=', kw)

    # *之后的都为命名关键字参数
    def f2(aa, bb, cc=0, *, dd, **kww):
    return ('aa=', aa, 'bb=', bb, 'cc=', cc, 'dd=', dd, 'kww=', kww)
    # 匿名函数
    a = list(filter(lambda n: n % 2 == 1, range(1, 4)))
    print(a)



  • 相关阅读:
    断开Oracle连接用户
    【转】Windows英文操作系统下ArcGIS 显示和保存中文数据
    断开Oracle连接用户
    如何判断标准输入或输出是否经过了重定向,即是否在命令行上使用了“”?
    PHP MYSQL网站注入扫描
    在PHPLIB中的MYSQL类中加INSERT,UPDATE,DELETE等函数
    为Linux安置红旗紫光输出法
    Linux下Resin JSP MySQL的摆设和设置配备摆设2
    红旗Linux桌面4.1文本安顿过程图解(一)
    MYSQL数据迁移tips,ORA00907: missing right parenthesis
  • 原文地址:https://www.cnblogs.com/niushichong/p/10036760.html
Copyright © 2011-2022 走看看