Python之基础

Python程序的组成

  • 程序由模块组成
  • 模块由语句,函数,类,数据等组成
  • 语句包含表达式
  • 表达式建立并处理数据对象

Python注释

# 号开头,至直行尾

数字

整型 int

整型数是不带小数部分的数字。包括自然数,0,及负数。如:-5,10000,0等。

整型数的字面值表示方式

  • 十进制表示。例如:10,20,1000,99999999
  • 二进制表示(0b开头,后跟0~1)。例如:0b111,0b101,0b11111111
  • 八进制方式表示(0o开头,后跟0~7)。例如:0o177
  • 十六进制表示(0x开头,后跟0~9, A~F,a-f)。例如:0x11,0xFF

进制转换:

  • 十进制(逢十进一)
  • 二进制(逢二进一)
  • 八进制(逢八进一)
  • 十六进制(逢十六进一)

练习

  • 计算0xFFFF表示多少?# 65535
  • 计算0b1001表示多少?# 9
  • 计算0o71表示多少? # 57
  • 把13转为二进制表示?# 0b1101
  • 把18转为十六进制表示?# 0x12

浮点型 float

浮点型数是带有小数部分的数字。

表示方式

  • 小数形式。例如:3.14,3.1,3.,0.14,.14
  • 科学计数法,格式:小数 e/E(正负号) 指数。例如:6.18E-1,2.9979e8

复数 complex

分为两部分:实部(real)和虚部(image),虚部以j或J结尾。

表示方式

1j, (2j), 1+1J, 3-4J, (-100+100J)

布尔类型数 bool

用来表示真和假两个状态的类型。

表示方式

  • True 表示真(条件满足或成立),值为1
  • Flase 表示假(条件不满足或不成立),值为0

数值对象的构造(创建)函数

  • float(obj) 用字符串或数字转换为浮点数,如果不能出参数则返回0
  • int(x,base=10)int(x=0) 用数字或字符串转换为整数,如果不给出参数,则返回0,base是指字符串参数的进制
  • complex(r=0.0, i=0.0) 用数字创建一个复数(实部为r, 虚部为i)
  • bool(x)x创建一个布尔值(True/False)
    • 返回假值的情况
      • None
      • False
      • 0
      • 0.0
      • 0j
      • 空字符串
      • () 空元组
      • [] 空列表
      • {} 空字典
      • set() 空集合

字符串

作用

用来记录文本(文字)信息

字符串的表示方法

在非注释中,凡是用引号括起来的部分都是字符串

  • 单引号 `
  • 双引号 "
  • 三单引号 '''
  • 三双引号 """

空字符串的字面值表示方式

''  # 单引号
""  # 双引号
''''''  # 三单引号
""""""  # 三双引号

非空字符串的字面值表示方式

'hello'  # 单引号
"hello"  # 双引号
'''hello'''  # 三单引号
"""hello"""  # 三双引号

单引号和双引号的区别

  • 单引号内的双引号不算结束符
  • 双引号内的单引号不算结束符

三引号字符串

作用

  • 三引号字符串的换行会自动转换为换行符\n
  • 三引号内可以包含单引号和双引号

转义序列代表特殊字符

字符串字面值中,用字符反斜杠 \ 后跟一些字符代表一个字符

字符串中的转义字符表
  • \' 一个单引号
  • \" 一个双引号
  • \\ 代表一个反斜杠
  • \n 换行
  • \r 返回光标至行首
  • \f 换页
  • \t 水平制表符
  • \v 垂直制表符
  • \b 倒退
  • \0 空字符,字符值为0
  • \0oo oo 为两位八进制表示的字符
  • \xXX XX为两位十六进制表示的字符
  • \uXXXX Unicode16的十六进制表示的字符
  • \UXXXXXXXX Unicode32的十六进制表示的字符

字符串的运算

  • +, += 用于字符串的拼接

  • *, *= 用于生成重复的字符串

      x = 'abcd' + 'efg'
      print(x)  # abcdefg
      x += '123'
      print(x)  # abcdefg123
    
      x = '123'
      y = x * 2  # '123123'
      x *= 3     # '123123123'
    
      x = 3
      x *= '123' # x = '123123123'
    

raw字符串

作用

让转义字符 \ 无效

字面值格式

  • r'字符串内容'

  • r"字符串内容"

  • r'''字符串内容'''

  • r"""字符串内容"""

      a = 'C:\newfile\test.py'
      print(a)  # 'C:\newfile\test.py'
      print(len(a))  # 16
    
      a = r'C:\newfile\test.py'
      print(a)  # 18
      print(len(a))  # 'C:\\newfile\\test.py'
    

字符串的比较运算

  • 小于 <

  • 大于 >

  • 等于 ==

  • 小于等于 <=

  • 大于等于 >=

  • 不等于 !=

      'A' < 'B'      # True
      'B' < 'a'      # True
      'ABC' > 'AB'   # True
      'AD' < 'ABC'   # False
      'ABC' == 'abc' # False
    

字符串的索引操作

索引语法

字符串[整数表达式]

说明

  • Python序列都可以用索引(index)来访问序列中的对象(元素)

  • Python序列的正向索引是从0开始的,第二个索引为1,最后一个索引为len(s)-1

  • Python序列的反向索引是从-1开始的,-1代表最后一个,-2代表倒数第二个,第一个是-len(s)

      s = 'ABCDE'
      print(s[0])  # A
      print(s[1])  # B
      print(s[4])  # E
    

空值 None 对象

表示不存在的特殊对象

作用

  • 用来占位
  • 用来变量解除绑定

表达式和运算符

表达式 expression

由一个数字或数字和运算符组成

作用

通常让计算机做一些事情并返回结果

运算符

算术运算符

  • 加法 +
  • 减法 -
  • 乘法 *
  • 除法 /
    • 除法得到的数是浮点数,不会丢弃小数部分
    • 1/3 = 0.3333333333333333
    • 4/2 = 2.0
  • 求余 %
  • 地板除 //
  • 除的结果去掉小数部分向下取整
  • 7//3=2
  • 8//3=2
  • 3.25//1.5=2.0
  • 幂运算 **
  • 格式:x ** y,意为xy次方
  • 4 ** 2 = 16
  • 3.0 ** 4.0 = 27
  • 5.6 ** 1.418 = 11.506165654866916

运算符的优先级

详见 Python运算符优先级

基本输入输出函数

基本输入函数 input

作用

从标准输入设备上读取一个字符串(末尾的换行符会被删除)

格式

input('提示字符串')

说明

返回输入的字符串(仅python3)

基本输出函数 print

作用

将一系列的值以字符串形式输出到标准输出设备上,默认为终端

格式

print(value, ..., sep=' ', end='\n')

  • sep 两个值之间的分隔符,默认为一个空格
  • end 输出完毕后在流末尾自动追加一个字符,默认为换行符\n

变量 variable

用来绑定数据对象的标识符

变量的命名规则

  • 变量名必须为字母或下划线开头,后跟字母或下划线或数字
  • 不能使用Python的关键字命名

变量的命名示例

合法的变量名

a,a1,b,bbb,_aaa_,_Abcdvara1b2c2

不合法的变量名

1a,123,$ABC,+a,-b,#ab,@ab

Python关键字

True,False,None,is,del,if,eli

赋值语句 statement

语法

  • 变量名 = 表达式
  • 变量名1 = 变量名2 = 表达式
  • 变量名1 ,变量名2,... = 序列

作用

用于创建变量并将变量绑定(或关联)在一个对象上

注意点

  • 当变量不存在时,创建该变量同时绑定在这个对象上
  • 当变量存在时,改变此变量的绑定的对象
  • 一个变量只能绑定一个对象
  • 两个变量可以同时绑定同一个对象

Python中关联/绑定/引用的含义

  • Python中变量没有类型,关联/绑定/引用都是指变量和一个对象的关联关系
  • 交互模式下查看变量的绑定关系:help('__main__')

序列赋值

语法

  • 变量名1,变量名2,... = 对象1,对象2...
  • 变量名1,变量名2,... = [对象1,对象2...]
  • 变量名1,变量名2,... = (对象1,对象2...)

经典案例

问:已知有两个变量:a = 10000,b = 20000,在不创建任何新的对象的情况下,如何让ab交换绑定的对象?

答: 序列赋值 a,b = b,a

a = 10000
b = 20000
print(a) # 10000
print(b) # 20000

a,b = b,a
print(a) # 20000
print(b) # 10000

is/is not运算符

语法

  • x is y
  • x is not y
  • is notis 相反

作用

判断两个对象是否绑定同一个对象,如果是同一个对象返回Ture,否则返回False

a = 1000
b = 1000
a is b  # False

c = 1
d = 1
c is d  # True

为什么上述的结果不同呢?

小整数对象池

CPython中整数-5 ~ 256永远保存在小整数池中,不会释放并可以重复使用

id 函数与 del 语句

id 函数

作用

返回一个对象在内存中的地址

格式

id(对象)

del语句

作用

用于删除变量,同时删除与对象的绑定关系。如果可能则释放对象

格式

del 变量名

Python的内存管理和引用计数

每个对象都会记录有几个变量引用自身,当引用的数量为0时,则对象被销毁,此种自动化内存管理的方式叫引用计数。

复合赋值算术运算符

  • y += x 等同于 y = y + x
  • y -= x 等同于 y = y - x
  • y *= x 等同于 y = y * x
  • y /= x 等同于 y = y / x
  • y %= x 等同于 y = y % x
  • y //= x 等同于 y = y // x
  • y **= x 等同于 y = y ** x

比较运算符

  • 小于 <
  • 大于 >
  • 等于 ==
  • 小于等于 <=
  • 大于等于 >=
  • 不等于 !=

语法

左表达式 < 右表达式

说明

比较运算符返回布尔类型的值

10 < 20  # True
1 + 10 > 2 + 8  # True
10 < 20 <= 30  # True

内建函数

内建数值型函数

  • abs(x)x的绝对值

  • round(number[, ndigits]) 对数值进行四舍五入,ndigits是小数向右取整的位数,负数表示向左取整

  • pow(x, y, z=None) 相当于x ** yx ** y % z

  • divmod(x,y) 分别取商和余数

  • sum(iterable[,start]) 计算可迭代对象iterable的和,结果再加上start的值

      abs(-6) # 6     
      round(1.23456,4) # 1.2346
      pow(2,3) # 8
      pow(2,3,4) # 0
      divmod(10,5) # (2,0)
      sum([1,2,3]) # 6
      sum([1,2,3],1) # 7
    

其他函数

  • help() 查看帮助信息
  • dir() 查看对象中的属性、方法等
  • ord() 得到一个字符所对应的数字编码
  • chr() 实现由数字编码向字符的转化
  • type() 查看对象的类型;不会认为子类是一种父类类型
  • isinstance() 查看对象类型;会认为子类是一种父类类型

语句 statement

语句是由一些表达式等组成,通常一条语句可以独立执行来完成一部分事情并形成结果

语法

  • 一条语句建议写在一行内
  • 多条语句写在一行内需要用分号分开

换行

  • 显示换行:\
  • 隐藏式换行:
    • 所有的括号内换行,称为隐式换行
    • 括号: (),[],{}

if 语句

if 语句基本语法

作用

让程序根据条件选择性的执行某条语句或某些语句

说明

if 语句又叫条件语句,也叫分支语句

语法

if 真值表达式1:
    语句块1
elif 真值表达式2:
    语句块2
elif 真值表达式3:
    语句块3
...
else:
    语句块4

语法说明

  • elif子句可以有0个,1个或多个
  • else子句可以有0个或1个且只能放在此if语句的最后
  • if语句内部的语句通常要以4个空格的缩进来表示包含关系,相同的缩进格式代表相同的所属级别

if 语句的真值表达式

if 100:
    print("真值")
# 等同于
if bool(100):
    print("真值")

if 语句嵌套

  • if 语句本身是由多条子句组成的一条复合语句
  • if 语句可以作为语句嵌套到另一个语句的内部

条件表达式

表达式1 if 真值表达式 else 表达式2

作用

如果真值表达式的布尔环境值为True,则执行表达式1并返回结果的引用,否则执行表达式2并返回结果的引用

num = int(input('输入一个数:'))  # -19
-num if num < 0 else num # 19

pass 语句

作用

  • 通常用来填充语法空白
  • pass 语句又名空语句

语法

pass

布尔运算

运算符

布尔非操作 not

语法

not x

作用

x进行布尔取值,如果bool(x)True,则返回False, 否则返回True

not True  # False
not False  # True
not 100  # False

布尔与操作 and

语法

x and yx,y代表表达式

作用
  • 优先返回假值对象

  • bool(x)的值为False时,返回x,否则返回y

      True and True    # True
      True and False   # False
      False and True   # False
      False and False  # False
      100 and 200      # 200
      0.0 and 200      # 0.0
    

布尔或操作 or

语法

x or y

作用
  • 优先返回真值对象

  • xTrue 时返回 x,否则返回 y

      True or True   # True
      True or False  # True
      False or True  # True
      False or False # False
      100 or 200   # 100
      100 or 0.0   # 100
      0 or 200     # 200
      0 or 0.0     # 0.0
    

正负号运算符

语法

  • + 表达式
  • - 表达式

in / not in 运算符

作用

用于序列,字典,集合中,用于判断某个值是否存在于容器中,如果存在则返回True, 否则返回False

格式

对象 in 容器

s = 'welcome to tarena!'
'to' in s  # True
'weimingze' in s  # False

切片 slice

作用

从字符串序列中取出一部分相应的元素重新组成一个字符串

语法:

字符串[(开始索引b):(结束索引e)(:(步长s))]

注: () 内括起的部分代表可以省略

说明

  • 开始索引是切片开始切下的位置0代表第一个元素,-1代表最后一个元素
  • 结束索引是切片的终止索引(但不包含终止索引)
  • 步长是切片每次获取完当前索引后移动的方向和偏移量
    • 没有步长,相当于取值完成后向后移动一个索引的位置(默认为1)

    • 当步长为正整数时,取正向切片:步长默认值为1, 开始索引默认值为0, 结束索引的默认值为len(s)

    • 当步长为负整数时,取反向切片:反向切片时,默认的起始位置为最后一个元素,默认终止位置为第一个元素的前一个位置

         s = 'ABCDE'
         a = s[1:4]  # a -> 'BCD'
         a = s[1:]   # a -> 'BCDE'
         a = s[:2]   # a -> 'AB'
         a = s[:]    # a -> 'ABCDE'
         a = s[4:2]  # a -> ''
         a = s[2:10000]  # a -> 'CDE' 开始索引/结束索引可以越界
         a = s[::2]  # a -> 'ACE'
         a = s[1::2] # a -> 'BD'
         a = s[::-1] # a -> 'EDCBA'
         a = s[::-2] # a -> 'ECA'
         a = s[4:0:-2]  # a -> 'EC'
      

Python3中常用的序列函数:

  • len(seq) 返回序列的长度

  • max(x) 返回序列的最大值元素

  • min(x) 返回序列的最小值元素

  • sum(x) 返回序列中所有元素的和(元素必须是数值类型)

  • any(x) 真值测试, 如果列表中其中一个值为真值则返回True,否则返回False

  • all(x) 真值测试,如果列表中所有值为真值,则返回True,只要有一个为假,则返回False

      s = "ABCD"
      print(len(s))  # 4
      print(max(s))  # D
      print(min(s))  # A
    

字符串编码转换函数

  • ord(c) 返回一个字符串的Unicode编码值
  • chr(i) 返回i这个值所对应的字符

整数转换为字符串函数

  • hex(i) 将整数转换为十六进制的字符串
  • oct(i) 将整数转换为八进制字符串
  • bin(i) 将整数转换为二进制字符串

字符串的构造(创建)函数

  • str(obj='') 将对象转换为字符串

字符串方法

常用的字符串方法

详见1 [常用字符串方法](file:///C:/Users/iMing/Desktop/python_base_docs_html/str.html)

详见2 Python中的字符串

字符串方法的调用语法

对象.方法名(方法传参)

字符串格式化表达式

详见 [格式化字符串](file:///C:/Users/iMing/Desktop/python_base_docs_html/str.html)

作用

生成一定格式的字符串

语法

  • 格式字符串 % 参数值
  • 格式字符串 % (参数值1, 参数值2, ...)
  • 格式字符串中的 % 为占位符,占位符的位置将用参数值替换

占位符和类型码之间的格式语法

% [格式语法] 类型码

  • - 左对齐

  • + 显示正号

  • 0 补零

  • 宽度(整数)

  • 宽度.精度(整数)

      '%10d' % 123   # '       123'
      '%-10d  ' % 123  # '123       '
      '%10s' % 'abc' # '       abc' 
      '%-5s' % 'abc' # 'abc  '
      '%05d' % 123   # '00123'
      '%7.3f' % 3.1415926  # '003.142'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343