Skip to main content

变量、表达式和语句

变量

变量的概念都是任何编程语言中的一个最基本的构件,变量有一个名称和一个内存中用于存储其值的位置。

在Python中,我们定义一个变量通常是创建一个变量并为这个变量赋值。变量赋值以后该变量才会被创建。

<var_name> = <value>

例如

number = 123
name = "XiaoMing"

变量的命名

变量的命名分为标识符和关键词: 标识符就是由我们自己定义的变量名,函数名。

  • 命名要顾名思义
  • 标识符可以由字母,下划线和数字组成
  • 不能以数字开头
  • 不能于关键词重名
  • Python中标识符要区分大小写

关键字是Python内部已经使用的标识符,具有特殊的功能和含义

可通过一下命令查看Python中的关键词

import keyword
print (keyword.kwlist)

1

开发者不允许定义和关键字相同的名字的标示符

在Python中定义变量不需要指定类型,数据类型分为数字型和非数字型:

  • 数字型
    1. 整型(int)
    2. 浮点型(float)
    3. 布尔型(bool)
  • 非数字型
    1. 字符串
    2. 列表
    3. 元组
    4. 字典

变量的输入

除了自己定义的变量外,我们可以通过

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+yx-yx*yx/yx//yx%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大于yx小于yx大于等于yx小于等于yx等于yx不等于y
x>yx<yx>=yx<=yx==yx!=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