zoukankan      html  css  js  c++  java
  • python 吐血总结 【函数基础】

    函数

    一、定义函数

    运行代码的时候,不会真正去执行代码,而是一个流程。

    二、函数定义的三种方式

    1、有参函数
    def f1(*args, **kwargs):
    2、无参函数
    def f2()
    3、空函数

    三、调用函数

    def f1():
        return 123456789
    
    f = f1()
    print(f)

    四、函数的返回值

    Return是返回返回值,函数遇到return会终止,return可以返回任意数据类型的值,同时也可以返回多个数值,也可以return里面进行数值运算和数据操作。
    如果没有return,那么默认返回的数值为None。

    五、函数的参数

    形参

    定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。
    
    # 这里函数里面的name就是一个形参
    def username(name):
         return name
    
    username('jackson')

    实参

    1、位置实参
    2、关键字实参
    3、默认参数   

    注意:
    1、如果实参不对该形参传值,那么使用默认值,一个形参只能接收一个值,如果重复那么报错
    2、关键字实参必须得在位置实参后面默认形参也必须在位置形参后面。

    六、可变长参数

     *args

    接收多余的位置实参,以元组的方式存储(1,1,2,3,3,4,5)

    *kwargs

    接收多余的关键字实参,以字典的方式存储{‘x’:2,'y':5,'a':8}

    例子

    def f1(*args,**kwargs):
        pass
    
    # f1可以接收所有的参数
    f1(1,1,2,3,3,4,5,x=2,y=5,a=8)

    七、函数对象

    def fun()
        pass
    1、引用 f = fun
    2、作为函数返回值
    return fun (装饰器里面的回调)
    3、作为函数参数传入f2(fun)
    4、容器元素 dict
    = {'x': fun}

    八、函数的嵌套

    def f1():
        def f2():
            pass
        
    f2()  # 报错
    # 看看这里两个函数是不是嵌套在一起了,f2嵌入在f1里面。(也是装饰器的一个特点之一)

    九、名称空间与作用域

     1、内置名称空间:存放内置的名字

    len、max、min、map、filter、

     2、全局名称空间:除了内置与局部之外,其他名字度存放在全局空间内

     3、局部名称空间:函数内部定义的名字或者属性都是局部名称空间,不同函数或类内部的名字互不干涉

    1、查找顺序:如果当前是局部名称空间,查找顺序为:局部、全局、内置
    
    2、执行顺序:先内置(python解释器启动的时候才会生成)——》全局(文件执行的时候才会生成)——》局部(函数调用的时候才会生成)

    4、作用域

    全局名称空间和局部名称空间中可能会存在名字相同的变量。
    但是这个是互不影响的。
  • 相关阅读:
    【USACO2017JAN】 Promotion Counting
    【POJ 3468】 A Simple Problem with Integers
    【HDU 1754】 I Hate It
    【Codeforces 20C】 Dijkstra?
    【POJ 2407】 Relatives
    BZOJ5249 九省联考2018IIIDX(线段树+贪心)
    BZOJ5251 八省联考2018劈配(网络流)
    BZOJ4200 NOI2015小园丁与老司机(动态规划+上下界网络流)
    BZOJ3876 AHOI/JSOI2014支线剧情(上下界网络流)
    LOJ117 有源汇有上下界最小流(上下界网络流)
  • 原文地址:https://www.cnblogs.com/jackson669/p/13018993.html
Copyright © 2011-2022 走看看