Python基础
特点
Python是一种相当简洁的高级语言,拥有丰富的基础代码库、第三方库,在数据分析、统计运算、绘图、网络爬虫、机器学习等,python非常具有优势。由于python是解释型语言,开发中没有编译这个环节,所以运行速度相对会慢,但在这种环境下可实时给出代码执行结果(又称Shell)
数据类型
python的数据类型可通过type()函数得知,详细数据类型及案例:python常见数据类型
- 数值类型
类型 | 解释 |
---|---|
int | 整数 |
float | 浮点数(带小数) |
bool | 布尔值(True、False、0、1) |
complex | 复数 |
注意:
- 在python中可实现数值类型之间的相互转换,使用方法名为对应需要转换的类型,如:int()
- 浮点数转整数会丢失精度(小数部分),任意数据类型都可转换为字符串
- 在bool类型中,True对应1,False对应0,且bool()中为空则为False
- 非数值类型
类型 | 解释 |
---|---|
str | **[序列]**描述文本的数据 |
list | **[序列]**有序的可变序列 |
tuple | **[序列]**有序的不可变序列 |
set | 无序的不重合集合 |
dict | 无序的key-value集合 |
注意:
-
字符串输出print中,字符串无法直接使用+与数字拼接
-
输出中,占位符有:%s、%d、%f,分别对应字符串、整数、浮点
-
序列支持切片操作,在下文有关于序列**(字符串、列表、元组)**的相关解释
import json data = [{"name":"lily","age":18},{"name":"sily","age":19},{"name":"zily","age":20}] # ensure_ascii参数控制是否不使用ASCII编码数据 json_str = json.dumps(data,ensure_ascii=True); print(type(json_str)) print(json_str) dict_list = json.loads(json_str) print(type(dict_list)) print(dict_list) # 输出: # <class 'str'> # [{"name": "lily", "age": 18}, {"name": "sily", "age": 19}, {"name": "zily", "age": 20}] # <class 'list'> # [{'name': 'lily', 'age': 18}, {'name': 'sily', 'age': 19}, {'name': 'zily', 'age': 20}]
扩展:
- json为拥有特定组织格式的字符串
- json数据类型为不同语言类型的"中转站",与字典非常类似(列表里面字典键值对)
- python内置的json包中的dumps方法可将python数据转化为json数据
- python内置的json包中的loads方法可将json数据转化为python数据
- ensure_ascii=True,解决ASCII编码不显示中文问题
运算符
-
算术运算符
运算符 解释 + 加法运算 - 减法运算 * 乘法运算 / 除法运算 // 取商的整数部分 % 取余数 ** 指数运算 注意:除法运算等,只要有小数位出现,数据会变为float
-
赋值运算符
运算符 解释 += 加法赋值运算 -= 减法赋值运算 *= 乘法赋值运算 /= 除法赋值运算 //= 取商的整数部分赋值 %= 取余数赋值 **= 指数赋值运算 = 赋值运算 -
比较运算符
运算符 解释 == 等于,判断是否相等 != 不等于,判断是否不相等 > 大于 >= 大于等于 < 小于 <= 小于等于 -
逻辑运算符
运算符 解释 and 逻辑且 or 逻辑或 not 逻辑非 注意:优先级顺序为:() >not >and >or
-
位运算符
位运算 解释 & 按位且运算 | 按位或运算 ^ 按位异或运算(非) ~ 按位取反 << 左移 >> 右移
流程控制语句
判断语句
-
if:
if bool值表达式: True条件执行
-
if-else
if bool值表达式: True条件执行 else: False条件执行
-
if-elif-else
if bool值表达式: True1条件执行 elif bool值表达式: True2条件执行 else: False条件执行
循环语句
在循环语句中,continue负责跳出当前的一次循环,break负责结束当前整个循环体
-
while:
while bool值表达式: True条件执行
注意:一般while用于明确的结束循环条件,for循环一般用于序列的循环
-
for:
for bool值表达式: True条件执行
-
for in:
str1 = "hello" for x in str1: print(x,end=" ") #输出:h e l l o
注意:python的for循环可以执行循环获取str的每个字符
-
range:
# range用于数字序列生成,可实现类似于java的次数控制 # 获得0-4的数字序列 range(5) # 获得3-5的数字序列 range(3,6) # 获得1-10中,每隔2位取一个的数字序列 range(1,11,2)
注意:range生成的序列都是不包含尾部数字的(左闭右开)
函数
基本结构
函数需要先定义后使用,参数可省略,返回值可省略,需要注意的是,函数与方法都是def关键字定义,只不过在class内部定义的函数我们称为方法,函数可直接通过函数名调用,但方法需要先获取类对象,通过类对象调用。
def 函数名(传入参数):
函数体
return 返回值
-
参数
即需要交给函数处理的数据,多参数之间使用,隔开
-
返回值
通过return关键字返回值,函数体遇到return就结束
若函数没有return关键字,则方法默认返回None
None等同于False
-
global
函数内部定义的变量为局部变量
最外部定义的变量为全局变量
若想在函数内部修改全局变量,则需要先【global 变量名】声明使用的是全局变量
函数的多返回值
- 当函数需要返回多个值时,在return关键字后面,多个返回值间使用逗号隔开
- 返回值之间的位置代表返回顺序,返回值的类型
允许不同
函数的多种传参方式
-
位置传参
即数据对应填入函数定义的形参位置
-
关键字传参
通过键值对指定某个形参的值,
参数位置可乱
,示例如下:def func(name age): return name,age name,age = func(age=18,name="lili")
-
默认参数(缺省参数)
即若没有传入参数,则使用默认值,有则使用传入的参数,
设置默认值的参数要放后面
def func(name age gender="男"): return name,age,gender name,age,gender = func("lili",18) #gendder的值为默认的"男"
-
可变参数
-
位置不定长
使用【*变量名】作为形参,传入序列,函数将序列转化为元组(固定序列)
-
关键字不定长
使用【**变量名】作为形参,传入键值对,函数将键值对转化为字典可(键值对)
-
-
函数作为参数传递
- 形参传入的是一个函数,在当前函数中,可调用传入的函数,即使用传入函数的逻辑
lambda匿名函数
- lambda匿名函数不需要写函数名,也不用写return关键字,默认返回处理结果
- lambda匿名函数需要在同一行完成函数的书写
- 格式:lambda 形参1,形参2 : 对形参的运算与处理