zoukankan      html  css  js  c++  java
  • 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

     

    三样东西有助于缓解生命的疲劳:希望、睡眠和微笑。---康德
  • 相关阅读:
    POJ 1003 解题报告
    POJ 1004 解题报告
    POJ-1002 解题报告
    vi--文本编辑常用快捷键之光标移动
    常用图表工具
    September 05th 2017 Week 36th Tuesday
    September 04th 2017 Week 36th Monday
    September 03rd 2017 Week 36th Sunday
    September 02nd 2017 Week 35th Saturday
    September 01st 2017 Week 35th Friday
  • 原文地址:https://www.cnblogs.com/ronghe/p/8358591.html
Copyright © 2011-2022 走看看