zoukankan      html  css  js  c++  java
  • 五、函数和内存分析

    函数的基本概念

    1.一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。

    2.函数是代码复用的通用机制

    python函数的分类

    1.内置函数,可以直接拿来使用的

    2.标准库函数ipmort

    3.第三方库函数,比如语音识别,科大讯飞的库,python社区提供了很多高质量的库

    4.自定义的库

    文档字符串:(注释)

    ‘’‘  xxxx ’‘’:通过help(函数名._doc_)进行调用

    a='''  xxxx '''表示多行输入字符串

    返回值

    1.有return返回,没有返回none;

    2.return有两个作用:1)返回值  2)函数执行结束

    3.返回的值也可以是列表、元组、字典、集合

    函数也是对象

    python中一切皆对象,函数也是一个对象

    def test01()

        print("djw")

    test01()

    c=test01

    c()

    上述代码中将test01的地址复制给了c,(括号)代表调用,调用的是一个function的对象,这个对象的值是djw所以c和test01调用的都是这个function的对象。如图:

    变量的作用域:全局变量、局部变量

    全局变量:尽量少定义,一般作为常量,使用global()可以进行查看,函数如果被调用,本身也是一个全局变量,如上面的test01

    局部变量:调用的时候,会动态的创建栈帧,使用local()可以进行查看局部变量

    参数传递
    浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用。copy.copy()
    深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不影响原对象。 copy.deepcopy()

    不可变参数:字符串、元组、数字等都是浅拷贝。

    可变参数
    * 一个星号,将多个参数收集到一个"元组"对象中
    ** 二个星号,将多个参数收集到一个"字典"对象中

    lambada表达式就是用来做一些简单的表达式,用来声明匿名函数:lambada arg1,arg2... <
    表达式>

    eval()函数:括号里面可以传递字符串

    递归函数:自己调用自己的函数,在自己调用自己的同时,不断的在栈中创建引用,因此必须 有结束语句.

    #计算阶层

    def factorial(n):
    if n==1:
    return 1
    else:
    return n*factorial(n-1)

    returns=factorial(5)
    print(returns)

     嵌套函数:在函数内部调用的函数,在内部函数可以封装,隐藏,降低重复代码,外部无法调用内部函数。

     nonlocal:表示声明外部函数的局部变量

    LEGB规则:local-->enclosed(内置函数变量)-->global--->built in(内置函数)

  • 相关阅读:
    Java框架第二次课
    知识扩展1——最大似然估计
    知识扩展2——熵 ,KL散度,交叉熵,JS散度,Wasserstein 距离(EarthMover距离)
    知识扩展3——广义线性模型GLM
    3 逻辑回归
    朴素贝叶斯
    GAN 的后序
    mysql 多个字段字符串合并成一个字段
    qt离线下载
    “用户”,你凭什么说改框架?
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/12234529.html
Copyright © 2011-2022 走看看