变量、表达式和语句
变量
变量的概念都是任何编程语言中的一个最基本的构件,变量有一个名称和一个内存中用于存储其值的位置。
在Python中,我们定义一个变量通常是创建一个变量并为这个变量赋值。变量赋值以后该变量才会被创建。
<var_name> = <value>
例如
number = 123
name = "XiaoMing"
变量的命名
变量的命名分为标识符和关键词: 标识符就是由我们自己定义的变量名,函数名。
- 命名要顾名思义
- 标识符可以由字母,下划线和数字组成
- 不能以数字开头
- 不能于关键词重名
- Python中标识符要区分大小写
关键字是Python内部已经使用的标识符,具有特殊的功能和含义
可通过一下命令查看Python中的关键词
import keyword
print (keyword.kwlist)
在Python中定义变量不需要指定类型,数据类型分为数字型和非数字型:
- 数字型
- 整型(int)
- 浮点型(float)
- 布尔型(bool)
- 非数字型
- 字符串
- 列表
- 元组
- 字典
变量的输入
除了自己定义的变量外,我们可以通过
raw_input
来实现键盘输入,用户输入的任何内容Python都认为是一个字符串。
变量的输出
在Python中通常使用print函数将信息输出到控制台,当我们希望输出文字信息的同时,一起输出数据,我们需要将输出格式化。
- 包含%的字符串,被成为格式化字符串
- %和不同的字符连用,不同类型的数据需要使用不同的格式化字符
格式化字符串 | 含义 |
---|---|
%s | 字符串 |
%d | 有符号十进制整数,%06d 表示输出的整数显示位数字,不足的地方使用0 补全 |
%f | 浮点数,%.02f 表示小数点后只显示两位 |
%% | 输出% |
语法格式:
- print ‘格式化字符串’ % 变量 1
- print ‘格式化字符串’ % (变量 1,变量 2…)
如果变量名不只一个单词,根据Python代码的风格指南建议用下划线将单词分开,“根据需要提高代码的可读性”。
my_list = [1,2,3,4,5]
表达式
常用的表达式操作符
算数运算
加法 | 减法 | 乘法 | 除法 | 除后取整 | 除后取余 |
---|---|---|---|---|---|
x+y | x-y | x*y | x/y | x//y | x%y |
逻辑运算
x in y """x属于y"""
x not in y """x不属于y"""
对象实例测试
x is y """对象x是y"""
x not is y """对象x不是y"""
注意区分"=="比较的是值,"is"比较的是对象
比较运算
x大于y | x小于y | x大于等于y | x小于等于y | x等于y | x不等于y |
---|---|---|---|---|---|
x>y | x<y | x>=y | x<=y | x==y | x!=y |
位运算
按位与 | 按位或 | 按位异或 | 按位取反 | 左移运算 | 右移运算 |
---|---|---|---|---|---|
& | 丨 | ^ | ~ | << | >> |
一元运算
取值 | 取负值 | 取值255-x |
---|---|---|
+x | -x | ~x |
幂运算
x ** y
索引和分片
索引从左向右从0开始,从右向左从-1开始
>>>'Hello World!'[0]
'H'
>>>'Hello World!'[11]
'!'
>>>'Hello World!'[-1]
'!'
>>>'Hello World!'[-11]
'e'
分片用于截取某个范围内的元素,通过:来指定起始区间(左闭右开区间,包含左侧索引值对应的元素,但不包含右测索引值对应的元素。
>>> num = [1,2,3,4,5,6,7,8,9,10]
>>> num[3]
4
>>> num[6]
7
>>> num[3:6]
[4, 5, 6]
#留意右边边界
>>> num[3:9]
[4, 5, 6, 7, 8, 9]
#右边越界,刚好是10对应的下一个索引值
>>> num[3:10]
[4, 5, 6, 7, 8, 9, 10]
#右边越界
>>> num[3:11]
[4, 5, 6, 7, 8, 9, 10]
#注意是不包含最后一个元素的
>>> num[-3:-1]
[8, 9]
>>> num[-4:-1]
[7, 8, 9]
>>> num[-10:-1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
#注意右边界
>>> num[-10:0]
[]
>>> num[-5:-1]
[6, 7, 8, 9]
#注意右边界
>>> num[-5:]
[6, 7, 8, 9, 10]
>>> num[-5:1]
[]>>> num[3:1]
[]
>>> num[3:-1]
[4, 5, 6, 7, 8, 9]
#取最右3个元素
>>> num[-3:]
[8, 9, 10]
#取最左3个元素
>>> num[:3]
[1, 2, 3]
#可以加入step length
>>> num[1:10:3]
[2, 5, 8]
>>> num[0:10:3]
[1, 4, 7, 10]
#起始位置默认为最左和最右,但不包括最右的元素
>>> num[::2]
[1, 3, 5, 7, 9]
>>> num[0:9:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> num[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#如果step length为0,会报错,也就是说步长不可以为0
>>> num[1:5:0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: slice step cannot be zero
#如果步长为负数,表示从右向左提取元素
#注意不包括6对应的元素
num[10:6:-1]
[10, 9, 8]
#倒序输出
>>> num[10::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
#从最左边开始
>>> num[:-3:1]
[1, 2, 3, 4, 5, 6, 7]
>>> num[:3:1]
[1, 2, 3]
#从最右边开始
>>> num[:3:-1]
[10, 9, 8, 7, 6, 5]
lambda表达式
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
add = lambda x, y : x+y
add(1,2) # 结果为3
def get_y(a,b):
def func(x):
return ax+b
return func
y1 = get_y(1,1)
y1(1) # 结果为2
改为lambda表达式
def get_y(a,b):
return lambda x:ax+b
y1 = get_y(1,1)
y1(1) # 结果为2
优先级
运算优先级 元组(...),序列[...],字典{...} s[i],s[i:j] s.attribute s(....) +x,-x,~x x * y / // % +,- << >> & --> ^ --> | < <=, > >=, == != is,not is in , not in not and or lambda
语句
赋值语句
基本赋值
a = 'SUEP'
元组赋值
>>> a,b='SUEP','is'
>>> a
'SUEP'
>>> b
'is'
>>> x = 'SUEP'
>>> y = 'is'
>>> a,b = x,y
>>> a
'SUEP'
>>> b
'is'
列表赋值运算
>>>[a,b] = ['SUEP','is']
>>> a
'SUEP'
>>> b
'is'
序列赋值运算
>>> a,b,c,d = 'SUEP'
>>> a
'S'
>>> c
'E'
扩展序列赋值
>>> a,*b = 'SUEP'
>>> a
'S'
>>> b
['U','E','P']
>>> a,*b,c = 'SUEP'
>>> a
'S'
>>> *b
['U','E']
>>> c
'P'
增强赋值运算
>>> a = [S,U,E]
>>> a += [P]
>>> a
[S,U,E,P]
assert语句
assert关键字作为代码中的某种健全性检查。比如在我们的代码中的某个点上,如果我们期望某些东西以某种方式出现,此时我们就可以使用assert关键字来验证它。
假设我们判定条件A是否成立
assert A
若A为True,那么代码将继续正常运行,如果A为Flase,那么代码运行将会出现以下错误
Traceback (most recent call last)
File "/your/path/A.py",line 2, in <module>
assert False
AssertionError
例如,有一个复杂函数get_length(),用来测量某物体长度,那么根据尝试,该函数的输出值必定大于等于零,我们可以设定一个assert函数来保证这一点。
length = get_length()
assert length >= 0
del语句
使用del语句,删除到变量到对象的引用和变量名称本身。注意del语句作用在变量上,而不是数据对象上。
>>> a = 0
>>> b = a
>>> del a # 删除变量a到0的引用,并删除变量名称a
>>> print(b)
0
但若我们选择print(a),那么将会输出错误,因为此时的a的变量名称被删除,a是未被定义的。
del语句通常用于list列表操作,删除一个或连续几个元素
>>> a = [0,1,2,3,4]
>>> del a[0]
>>> print(a)
[1,2,3,4]
>>> a = [0,1,2,3,4]
>>> del a[0:3] #删除第0~3个元素,含头不含尾。
>>> print(a)
[3,4]
return语句
将执行结果返回到调用的地方,并把程序的控制权一起返回。程序运行到第一个return即返回退出def块。函数中没有return则默认一个None对象
>>> def fun(a,b):
print (a)
return a
print (b)
return b
>>> resunlt = fun(2,6)
2