zoukankan      html  css  js  c++  java
  • 函数(2)

    Python基础

    特殊变量

    Python解释器提供了一些以两个下划线开头和结尾命名的变量,它们具有特别意义,比如_doc_ (获得文件里面的注释内容) _file_ ,表示当前脚本路径等,这也是为什么文件命名要尽量避免以两个下划线开头和结尾

    递归函数(Recursive Function)

    自己调用自己的函数,编写递归函数要重点把握两点:递推关系和递归结束条件

    每次调用函数都需要分配一块栈区空间,用于储存函数的参数以及内部定义的局部变量等数据,在函数执行结束返回后,它对应的栈区空间会被释放(归还给系统),里面的数据将不复存在,如果不停地调用函数,并且函数都没有返回,那么栈区空间迟早会被耗尽,导致无法继续调用函数

    递归思想在解决某些复杂问题时可能会意想不到的简单!

    def f():

    f()

    f()

    递归调用的深度不能太深,函数调用会耗费时间和内存空间,函数里的参数和变量存在栈区空间,还会存放函数执行的位置,而区栈空间是有限的,一般只有两兆的空间 ,所以此函数调用会失败

    匿名函数(Lambda)

    Lambda表达式,主要用于Python函数式编程中,或临时使用函数的场合,我们不想费神去定义一个函数名,使用lambda关键字定义

    模块(Module)和包(Package)

    模块就是Python源文件,可以直接运行,也可以被导入其他模块(使用import关键字,以调用它里面定义的全局变量、函数、类等,并能解决变量、函数和类的命名冲突问题 不同模块中可以冲突)

    包就是存放若干个模块的文件夹,可以解决模块的命名冲突问题(在不同包中的模块可以同名),为了和普通文件夹有所区别,标准的做法是在包下面创建一个__init__.py文件,这个文件夹可以为空

    注意import和from...import的用法区别

    import Module # 引入模块

    from Module import Other # 引入模块中的类、函数或者变量

    from Module import * # 引入模块中的所有‘公开’成员

    PS:当有一个包名为pname时,其内部 .py 文件的模块名就是 pname. 也就是说模块名中包含了 Package包 这个概念。

    其区别就是:

    第一个:引入的模块(假如是 mdemo )会自动生成一个‘对象‘以模块名命名,然后就可以通过这 个‘对象’(mdemo)获取该模块里面的类、函数或变量等..

    第二个:引入模块中的Other(这里的Other就是模块中定义的成员)成员, 调用时就可以省略 模块名。

    第三个:这种情况如果上面的第二个弄懂的话就不难理解了, 其意思就是引入模块中所有'公开'的成员。

    标准库(不需要下载,直接可以使用)和第三方库

    第三方库在使用时需要先下载,通常使用pip这个包管理器,其常用用法如下:

    安装第三方库: pip install 包名 [-i https://pypi.douban.com/simple]

    卸载第三方库:pip uninstall 包名

    显示所有已安装的包:pip list

    扩展

    1.哲学:存在即合理

    2.tuple的访问效率比list快一些,能用tuple的地方就不用list

    3.tuple和list里面可以为任意数据类型

    4.函数调用的变量一般使用两个即可,如果非要使用则顺序为:未知,默认,可变,命名,关键字

    作业

    1.解决汉诺塔问题

    2.解决八皇后问题

    3.实现一个二维码生成器

    调用各种模块

     

  • 相关阅读:
    c++命名空间重命名
    ssh保持长连接的配置方法
    macos平台上使用 sed
    c++的使用
    NAT介绍以及穿透各种类型nat的技术实现包括对称型nat
    组态图绘制软件的实现
    关于五防系统
    Linux的应用
    java常用包及其类概述
    springboot整合redis
  • 原文地址:https://www.cnblogs.com/yanruizhe/p/11228318.html
Copyright © 2011-2022 走看看