Python导论、数据类型、运算、I/O
Python导论
Python是一门脚本语言,其扩展名为.py
。脚本语言是被逐句解释执行的,此过程依赖于解释器。Python的解释器有CPython、Pypy等。
程序构成
Python程序由模块、语句、表达式、对象组成。
-
模块:每个
.py
源代码文件即为模块,系统自带的模块为系统模块,用户编写的模块为用户模块。模块由若干语句构成。 -
语句:分为简单语句和复合语句。注意Python语句严格强调缩进,否则会导致语法错误。
- 简单语句:一般地,每条简单语句独占一行。若一行内有多条语句,则其之间使用
;
分隔。包括表达式、赋值、pass
(空语句)、del
、return
、break
、continue
、import
、global
等。 - 导入模块(
import
)语句:import [module]
或from [module] import [name]
。前者导入后使用模块名.成员名
调用,后者导入后使用成员名
调用。 - 复合语句:有多行代码组成的语句,包括
if
、while
、for
、def
、try
、with
、class
等。由头部语句与构造体语句块组成,其中:
表示复合语句中语句块的开始。构造体语句块相对于头部语句块有缩进。 - 注释:分为注释语句与注释块,解释时跳过此语句/块。
#
开头的语句为注释语句,被'''
包围的块为注释块。
- 简单语句:一般地,每条简单语句独占一行。若一行内有多条语句,则其之间使用
-
对象:Python中万物皆对象,对象通过标识、类型、值进行标识。
- 标识:唯一地标识对象,
id([name])
返回对象标识,CPython中表示对象的内存地址。 - 类型:对象的数据类型,
type([name])
返回对象的数据类型。 - 值:对象的实际值,
print([name])
返回对象的实际值。
==
判断两个对象的值是否相同,is
判断两个对象的标识是否相同(是否指向同一个对象)。 - 标识:唯一地标识对象,
数据类型
类型 | 描述 |
---|---|
数字 不可变对象 | 整数(int) 浮点数(float)(即小数) 布尔 (bool):False(0)为假,True(非0)为真 复数 (complex):如4+3j(以j结尾表示复数) |
字符串 (str,' '/" " )不可变对象 | 由任意数量的字符组成 |
元组 (tuple,( ) )不可变对象 | 不可变的序列,可随机访问 序列中元素可为任意数据类型 |
列表 (list,[ ] )可变对象 | 可变的序列,可随机访问 序列中元素可为任意数据类型 相当于其他语言的数组 |
集合 (set,{ } )可变对象 | 不重复的无序序列,不能随机访问 序列中元素必须为不可变对象,且可被哈希 |
字典 (dict,{ : } )可变对象 | 不重复的键值对(Key->Value)序列,必须只访问存在的键 若存在多个重复键,则只保留最后一个 键必须为不可变对象,且可被哈希 |
赋值
Python是动态语言,变量无需显式声明,通过赋值可自动确定数据类型。
- 赋值语句:
标识符=对象
,=
为赋值运算符,用于将标识符指向某个对象(引用该对象)。 - Python支持链式赋值语句:
标识符1=标识符2=对象
,对象从右到左依次传递。 - 使用
del
删除标识符:del 标识符
- 序列解包赋值:Python可将序列解包为对应相同个数的变量,如
a,b=b,a
。若想解包部分值,可使用特殊变量_
(相当于其他语言中的ignore
:_,b=1,2
)。
运算
算术运算
-
四则运算:
+
,-
,*
,/
(小数),//
(整除) -
取模:
%
(注意Python是取模不是取余) -
乘方:
**
/math.pow
/pow
-
自然底数:
math.exp
-
对数:
math.log
(不指定底数则为 ln \ln ln)/math.log10
( lg \lg lg)/math.log2
-
三角及反三角函数:
math.sin
/math.cos
/math.tan
/math.asin
/math.acos
/math.atan
逻辑运算
- 非:
not
- 与:
and
- 或:
or
I/O
输入(input函数)
-
构造:
input(["提示"])
([]
内表示可选参数) -
作用:从
stdin
获取输入,返回所输入的字符串(str),可将字符串转为需要的数据类型,如a=int(input())
。 -
若要输入带有提示,则向
input
传递提示字符串参数。 -
输入的字符串可使用字符串的分割方法(
str.split()
),进而传递给多个标识符。
如a,b=map(int,input().split([sep=None]))
(map表示批量作用,split默认以空格分割)
输出(print函数)
- 构造:
print(obj[,sep=' ',end='\n',file=stdout])
obj
:所要输出的对象sep
:若输出多个对象,指定对象间的分隔符(默认为空格)end
:输出行尾结束符(默认为\n
)file
:指定输出到的文件(默认为stdout
)
格式化输出
格式化输出有f-string、str.format()、%
格式化三种方法,在此仅介绍f-string方法。
print(f"{对象名:格式说明}")
示例 | 说明 |
---|---|
{value:10} | 宽度10,默认右对齐,空格填充 |
{value:<10} | 宽度10,左对齐 |
{value:^10} | 宽度10,居中对齐 |
{value:0>10} | 宽度10,右对齐,0填充 |
{value:.2f} | 浮点数,小数点后保留2位 |
{value:,.2f} | 加千分位符,保留2位 |
{value:.0%} | 百分比格式,四舍五入到整数百分比 |