• Python之路【第十二篇】:函数


    定义函数

    def 函数名(形式参数):
    函数体
    return 返回值

    a = 1
    def f(b):
        print(b)
        return None

    如上所示,就是简单的定义了一个函数

    函数的返回值

      return后面为函数的返回值,跟其他编程语言不一样的是,在python中,不需要在def前面指定函数返回值的类型

    如果函数没有返回值,默认返回一个None

    在函数里面,只要执行了return,函数就执行完了,函数中return后面的代码就不执行了

    函数的参数

    • 形参和实参
    • 指定参数
    • 默认参数
    • 动态参数
    • 函数作为参数

    形参和实参

    在定义函数的时候,函数名后面括号里的参数是形式参数,简称形参

    在执行函数的时候,函数名后面括号里的参数是实际参数

    a = 1
    def f(b):
        print(b)
    f(a)

    如上所示,b为形参,a为实参

    指定参数

    形参与实参默认是按照顺序一一对应的,如def f(x,y)......f(1,2),x与1对应,y与2对应,但是也可以指定参数,这样,形参与实参就不用一一对应了

    def f(x,y)......f(y=1,x=2),这样就是指定参数

    默认参数

    def drive(p,name = 'alex'):
        temp = name + str(p) + '开车去东北'
        return temp
    s = drive(11)
    print(s)

    输出结果为:

    alex11开车去东北

    在上面的例子中,p是一个普通参数,name具有默认参数,一定要把含有默认值的参数放在后面

    也可以给含有默认值的参数传递参数,这时默认值就不起作用了

    动态参数

    第一种动态参数:在形参列表中,在形参前面加上一个*,这样参数就可以不受数量限制了,如:

    def f(*a):
        print(a)
        print(type(a))
    f(1,2,3,4,5)

    输出结果为:

    (1, 2, 3, 4, 5)
    <type 'tuple'>

    由此可见,虽然只有一个形参a,但是却接受了5个参数,还有一点需要注意,第一种动态参数的类型是元组类型

    第二种动态参数:在形参列表中,在形参的前面加上两个*, 在传递参数的时候,必须是键值对传(key=value),第二种动态参数会将闯进来的参数转换成字典,如:

    def f(**a):
        print(a)
    f(k1=1,k2=2)

      输出结果为:

      {'k2': 2, 'k1': 1}

      一般,第一种动态参数用args表示,第二种动态参数用kwargs表示,因此因该是这样:f(*args)与f(**kwargs)

      两种动态参数可以放在一起使用

    def fun(*args,**kwargs)...注意:*args在前面,**kwargs在后面,这个是规定死了的,不能变
    fun(11,22,33,44,key1=value1,key2=value2)
    这样自动就把11,22,33,44方到args中,key1=value1,key2=value2放放到kwargs中,
    def fun(p,*args,**kwargs)...
    fun(11,22,33,44,key1=value1,key2=value2)
    这样,把11自动给p,22,33,44给args,key1=value1,key2=value2放放到kwargs中

    函数作为参数 

    def f1():
    return 123
    print(f1)

      输出结果为:<function f1 at 0x000001ABF30ED268>,由此,我们可以看出:

      f1:代指函数

      f1():调用函数

    def f1():
        return 123
    def f2(f1):
        f1()
        return 456

    在f2函数中,参数为f1,这个时候,f1做了f2的参数

    全局变量与局部变量

      约定:全局变量都大写,局部变量都小写

    在函数内部,如果想要修改全局变量需要加一条global A语句

    A = 1
    def fun():
        b = 2
        global A
        A = 3
    fun()
    print(A)

      A为全局变量,b为局部变量,如果想要修改A,需要加一条global A语句,如果不加该语句,b=1 A=3直接这样,表示又申请了一个局部变量A

     

    三样东西有助于缓解生命的疲劳:希望、睡眠和微笑。---康德
  • 相关阅读:
    蓝桥杯-最大子阵
    蓝桥杯-四平方和问题
    蓝桥杯-生日蜡烛
    蓝桥杯-三羊献瑞
    蓝桥杯-李白喝酒
    使用SSH远程管理时本地文件被修改了
    Total Commander基本配置及使用(整理)
    Linux下自己和自己用各种方法进行文件的上传下载
    idea搭建springcloud微服务框架
    将tomcat注册成服务(windows)、linux安装svn、docker、nginx、zipkin以及rabbitMQ教程
  • 原文地址:https://www.cnblogs.com/ronghe/p/8358591.html
Copyright © 2020-2023  润新知