python基础(二)

来源:互联网 发布:太阳队布克数据 编辑:程序博客网 时间:2024/05/21 10:32

这里主要讲Python的语法,控制语句,函数,模块和包。

语法基础

控制语句

判断语句

  • if
  • if...else
  • if...elif...else
x = 1if x == 1:    print('x=1')y = 2if y == 2:    print('y==2')else:    print('y!=2')z = 3if z == 3:    print('z=3')elif z == 4:    print('z=4')else:    print('z!=3 and z!=4')

循环语句

  • while
  • for
  • break, continue
x = 1whlie x <= 100:    x += 1print(x)z = 0for i in range(10):    z += iprint(z)

注:range(start=0, stop[, step])返回一个range对象,包含start,不包含stop

break用于跳出当前的循环,continue用于跳出此次循环,执行下一次循环。

函数

def fun():    print('this is a function')def add(a, b):    return a + b

lambda函数:定义:fun = lambda val1, val2 : expression,调用:fun(val1, val2),返回expression
Generator函数

#定义Generator函数def funn):     for i in range(n):         yield i#使用for循环输出for i in fun(3):    print(i)#使用next()输出r = fun(3)print(r.next)print(r.next)print(r.next)

Module(模块)

一个模块就是一个py文件,模块里面可以有函数,类,变量。
经常会看到这样的写法

if __name__ == '__main__':    do something

这里就涉及到模块的__name__属性了。
不如有两个文件:a.pyb.py。如果b.py里`写入如下内容:

import aprint(a.__name__)print(__name__)##输出结果a__main__

也就是说,当运行一个py文件的时候,此文件的__name__就是__main__,当一个py文件被导入的时候,被导入的py文件的__name__就是模块名。

一个包就是一个文件夹,里面至少含有__init__.py文件,此文件内容可以为空。包里面可以含有包和模块
当一个包被调用的时候,首先执行里面的__init__.py文件。

关于下划线

  • 单下划线开头的模块
    使用一个 C 编写的扩展库有时会用下划线开头命名,然后使用一个去掉下划线的 Python 模块进行包装。如 struct 这个模块实际上是 C 模块 _struct 的一个 Python 包装

  • 单下划线开头的变量和函数
    这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入。不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var 这样的形式访问到这样的对象。

  • 单下划线结尾的变量
    这在解析时并没有特别的含义,但通常用于和 Python 关键词区分开来,比如如果我们需要一个变量叫做 class,但 class 是 Python 的关键词,就可以以单下划线结尾写作 class_。

  • 双下划线开头结尾
    这是一些 Python 的“魔术”对象,如类成员的__init____del____add____getitem__等,以及全局的__file____name__ 等。 Python 官方推荐永远不要将这样的命名方式应用于自己的变量或函数,而是按照文档说明来使用。

  • 双下划线开头
    Python 的类成员中使用表示名字改编 (Name Mangling),即如果有一Test类里有一成员 __x,那么dir(Test) 时会看到_Test__x 而非__x。这是为了避免该成员的名称与子类中的名称冲突。但要注意这要求该名称末尾没有下划线。此时通过Test.__x是无法访问的,可以通过Test._Test__x访问

  • 总结
    _xxx不能用’from module import *’导入
    __xxx__系统定义名字
    __xxx 类中的私有变量名

可以参照理解Python的双下划线命名-CSDN ,Python 的类的下划线命名有什么不同?-知乎

原创粉丝点击