这里主要讲Python的语法,控制语句,函数,模块和包。
语法基础
控制语句
判断语句
if
if...else
if...elif...else
x = 1
if x == 1:
print('x=1')
y = 2
if y == 2:
print('y==2')
else:
print('y!=2')
z = 3
if z == 3:
print('z=3')
elif z == 4:
print('z=4')
else:
print('z!=3 and z!=4')
循环语句
while
for
break, continue
x = 1
whlie x <= 100:
x += 1
print(x)
z = 0
for i in range(10):
z += i
print(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 fun(n):
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.py
和b.py
。如果b.py
里`写入如下内容:
import a
print(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
类中的私有变量名