
在python程序中,一切数据结构都是存储在堆空间中的对象。python程序中的变量都是引用变量,可以指向任何类型的对象。
常用的语句包括:
结构定义语句(函数定义和类定义)
赋值语句(普通赋值和扩展赋值)
控制语句(if-else条件、for循环、while循环、continue、break和return)
板块引入语句(import和from-import)
异常语句(异常捕获try-except/finally、异常抛出raise)
变量作用域公告语句(global和nonlocal)
上下文管理语句(with)
断言语句(assert)
常用的表达式:
布尔表达式
算术表达式
比较表达式
简单集合构造表达式(例如,[1,2,3])
复杂集合构造表达式(例如,[x+1 for x in y])
lambda表达式
调用表达式
属性解引用表达式
元素解引用表达式
python板块被引入到程序中时,是堆空间的一个对象。python板块中通常包含python对象的定义以及python语句。当一个板块被初次引入时,python解释器会执行对应的python文件,并同时创立一个板块类型对象。板块中的全局对象会被作为属性增加到该板块对象的属性集合中。
板块引用方式:
(1)通过关键字import
(2)通过关键字from...import...
python中的板块也是一种普通对象,可以被当作参数任意传递。
python的包是一个包含init.py文件的文件,当初次引入一个包时,init.py文件会被默认执行。
python包在程序中本质上也是一个板块对象,其特性与板块基本相同。
python中的类,是一个类类型的对象,可以通过关键字class在程序任何地方定义。
python中的类可以继承多个基类,子类中的属性可以覆盖父类的属性来实现重载。
实例对象可以拥有自身的属性字典,不与其余实例对象共享。
通过关键字def在程序任何地方定义。
当一个函数对象被作为参数时,其执行所需的环境也会被作为闭包进行过程间的传递。
python中的lambda表达式本质上是一个匿名的函数,使用起来与函数几乎无差别。
python中的方法实则是被动态绑定闭包的函数,可分为类方法、实例方法和静态方法。
类方法:属于某个类,在调用时,其所属的类对象会被隐式地传递给方法的第一个参数。
实例方法:其对应的实例对象会被隐式地传递给该方法的第一个参数。
静态方法:不属于任何类或者实例,在调用时,其效果等同于一个自由函数,不存在任何隐式参数传递
python中的对象具体可以分为不可变对象和可变对象。
不可变对象是指对象的内部属性不可以变,常见的不可变对象包括整数、浮点数、字符串和元组等。
可变对象则是指对象的内部属性是可以被任意改变的。可变对象具备非常强的动态性,其内部属性可以被任意增加、修改或者删除。
python中的反射是指可以利用少量元对象的设备来访问、更改和删除对象属性(包括方法的追加和调用等)。
python中常用的反射 函数包括hasattr()、getattr()、setattr()和delattr()等。
python中提供了exec()和eval()函数,exec()用于执行一段动态构造的语句块;eval()则用于执行一个动态构造的表达式。
使用#或者者引号包裹的内容
当py文件是被调用时,name的值为板块名,当文件被执行时,name为'main'
为了确保py文件可以被直接运行,也可以被import作为板块导入,每个py代码中都应包含:
if __name__ == '__main__': dosthing(args)这里的args是指python xxx.py xxx中的[xxx.py,xxx]
Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数
为类Unix系统提供更多信息,
第一行以 #! 开头的代码, 在计算机行业中叫做 "shebang", 也叫做 sha-bang / hashbang / pound-bang / hash-pling, 其作用是"指定由哪个解释器来执行脚本".
一般我们用来指定使用python的版本,系统会优先查找这个地址的执行文件
#!/usr/bin/python3Python两种输出值的方式: 表达式语句和 print() 函数。
第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用。
假如你希望输出的形式更加多样,可以使用 str.format() 函数来格式化输出值。
假如你希望将输出的值转成字符串,可以使用 repr() 或者 str() 函数来实现。
str(): 函数返回一个客户易读的表达形式。
repr(): 产生一个解释器易读的表达形式。
>>> s = 'Hello, Runoob'>>> str(s)'Hello, Runoob'>>> repr(s)"'Hello, Runoob'">>> str(1/7)'0.14285714285714285'>>> x = 10 * 3.25>>> y = 200 * 200>>> s = 'x 的值为: ' + repr(x) + ', y 的值为:' + repr(y) + '...'>>> print(s)x 的值为: 32.5, y 的值为:40000...>>> # repr() 函数可以转义字符串中的特殊字符... hello = 'hello, runoob\n'>>> hellos = repr(hello)>>> print(hellos)'hello, runoob\n'>>> # repr() 的参数可以是 Python 的任何对象... repr((x, y, ('Google', 'Runoob')))"(32.5, 40000, ('Google', 'Runoob'))"两个print会打印在不同的两行,假如希望连续不换行打印,前一个结尾使用end参数
>>> print('a',end='');print('b')abrjust可以右侧增加空白,ljust左侧增加空白,format方法中数字{:xd}字符串{:ns}有相似作用
>>> print('{0:3s}{1:3s}{2:3s}'.format('a','b','c'));print('a'.ljust(2),'b'.ljust(2),'c'.ljust(2));a b c a b czfill()用于在数字左侧空位补0
>>> '12'.zfill(5)'00012'>>> '-3.14'.zfill(7)'-003.14'>>> '3.14159265359'.zfill(5)'3.14159265359'format()方法是用format参数替换字符串中大括号,默认为依次替换,{3}可以指定使用第三个参数
>>> '{}-{}'.format('a','b')'a-b'>>> '{1}-{0}-{1}'.format('a','b')'b-a-b'>>> '{b}-{a}'.format(a='a',b='b')'b-a'format中'!a' (使用 ascii()), '!s' (使用 str()) 和 '!r' (使用 repr()) 可以用于在格式化某个值之前对其进行转化:
>>> print('{a!r}-{a}'.format(a='\n\'OK\''))"\n'OK'"-'OK'format中{a:10}表示a至少占10个字符位置,{a:2s}或者{a:2d}相似,可以用来对齐
format中字符串可以使用[]直接访问参数字典的同名属性
>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}>>> print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table))Runoob: 2; Google: 1; Taobao: 3>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}>>> print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table))Runoob: 2; Google: 1; Taobao: 3% 操作符也可以实现字符串格式化。 它将左边的参数作为相似 sprintf() 式的格式化字符串, 而将右边的代入, 而后返回格式化后的字符串. 例如:
>>> import math>>> print('常量 PI 的值近似为:%5.3f。' % math.pi)常量 PI 的值近似为:3.142。Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。
input 可以接收一个Python表达式作为输入,并将运算结果返回。
str = input("请输入:");print ("你输入的内容是: ", str)