基础语法
目录
Python 是一种脚本语言(解释型),在许多地方都不会很严格(参考 nodejs)
别看 python2 了? python2 和 3 在一些常用的地方有不同,对使用影响较大
强制格式缩进
导入
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
import sys
print('================Python import mode==========================')
print ('命令行参数为:')
for i in sys.argv:
print (i)
print ('\n python 路径为',sys.path)
取别名:import somemodule as alias
import turtle as t
## turtle.backward(distance)
t.backward(distance)
基本语法
注释
## 芝士注释
"""
芝士一段注释
emm
"""
'''
芝士一段注释
emm
'''
分支语句
分支语句的:
别忘了
- if
if expression :
suite
elif expression :
suite
else :
suit
变量
- 允许不申明变量
变量名
- 只能为字母,数字,下划线
- 只能字母,下划线开头
## 输出python保留关键字
import keyword
print (keyword.kwlist)
## ['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
赋值
## 赋值
a = 1
str="test"
## 特殊的赋值方法
C, D, E = 1,2,3
数据类型
Python3 中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- **不可变数据(3 个):**Number(数字)、String(字符串)、Tuple(元组);
- **可变数据(3 个):**List(列表)、Dictionary(字典)、Set(集合)。
变量类型
在 python 中,类型属于对象,变量是没有类型的
a=[1,2,3]
a="Runoob"
以上代码中,[1,2,3]
是 List 类型,"Runoob"
是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。
可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
- **不可变类型:**变量赋值
a=5
后再赋值a=10
,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。 - **可变类型:**变量赋值
la=[1,2,3,4]
后再赋值la[2]=5
则是将 list la 的第三个元素值更改,本身 la 没有动,只是其内部的一部分值被修改了。
这对下面函数传参有很大的影响
变量等价关系
用于比较,if 语句
[] == False # 常用于判断数组是否为空
string
- Python 中的字符串不能改变。
- Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
定义
Python 中单引号 ' 和双引号 " 使用完全相同
pythonword = '字符串' sentence = "这是一个句子。" # 使用三引号(**'''** 或 **"""**)可以指定一个多行字符串 paragraph = """这是一个段落, 可以由多行组成""" str='123456789'
引用
全部引用和下标引用
- Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
pythonprint(str) # 输出字符串 print(str[0]) # 输出字符串第一个字符 print(str * 2) # 输出字符串两次 print(str + 'hello') # 连接字符串 print('hello\nrunoob') # 使用反斜杠(\)+n转义特殊字符 print(r'hello\nrunoob') # 不使用转义,输出hello\nrunoob
反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r"this is a line with \n" 则 \n 会显示,并不是换行。
这里的 r 指 raw,即 raw string,会自动将反斜杠转义
切片
- 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
pythonprint(str[0:-1]) # 输出第一个到倒数第二个的所有字符 print(str[2:5]) # 输出从第三个开始到第五个的字符 print(str[2:]) # 输出从第三个开始后的所有字符 print(str[1:5:2]) # 输出从第二个开始到第五个且每隔一个的字符(步长为2)
字符串方法
### 大小写变换
str_test.title() # 每个单词首字母大写
str_test.upper() # 每个字母大写
str_test.lower() # 全部字母小写
### 空格处理
str_test.rstrip() # 删除字符串末尾空格
str_test.lstrip() # 删除字符串开头空格
str_test.strip() # 删除字符串两端空格
### 拼接
str_test1 + str_test2 # 拼合字符串
"this " "is " "string" # 按字面意义级联字符串,自动转换成 'this is string'
### 查询
'i' in 'inst'
### True
相关函数
str()
将对象转换为字符串
## 使用数字拼接字符串会出错
## 使用str()函数转换
## "emm"+23 ×
"emm" + str(23)
数字对象
运算
## python里可以用 + - * / 以及**(乘方)
2**5
>>>32
浮点数
- python 自带高精度
0.1+0.1
## 0.2
## 但有时会比较奇怪
0.1+0.2
## 0.30000000000000004
## 在python2里,使用浮点数运算才会返回浮点数
## 整数相除为整除
2/3
## 1
2.0/3.0
## 1.5
列表 LIST
定义
## 定义
list_ = [1, 2, 3, 4, 5, 6, 7, 8, 9]
这里的list_
可以理解为一个对列表的引用吗,需要时可以切换其指向
引用
除了
list_
以外都会返回一个新的对象,对该对象操作不会改变列表(塞了引用型数据除外)
直接输出整个 list
pythonlist_ # [1, 2, 3, 4, 5, 6, 7, 8, 9] sorted(list_) # 返回列表排序后的样子,用法类似list.sort()
通过位序引用
方括号的使用方式类似字符串
pythonlist_[0] # 1 第一个元素 list_[-1] # 当列表为空时会报错 # 8
截取部分(切片),返回一个新的 list
- 当方括号中出现
:
时,其返回该列表的一个子列表 - 方括号有三个参数
[起始位序(含):终止位序(不含):步长]
pythonlist_[0:2] # 位序为1-2的元素:[1, 2] list_[::2] # 从第一个开始每隔2个取一个:[1, 3, 5, 7, 9] # 返回一个一样的,*新的*列表,常用于复制列表 list_[:]
- 当方括号中出现
增删查改
增
python# 向末尾插入,1次只能添加1个元素 list_.append(99) # 在列表中间插入元素 list_.insert(0,101)
删
python# 删除元素 del lisr_[0] # 弹出第n个元素,默认弹出最后一位,返回对应的元素 n=1 ele = list_.pop(n) # 删除列表中指定元素,只删除第一个查到的元素,若没有会报错 list_.remove(2)
改&排序&反转
python# 修改元素内容 list_[0] = 100 # 以字母为根据排序,默认升序,括号里填reverse=True降序 list_.sort() # 反转列表 list_.reverse()
查
python4 in [1, 2, 3, 4, 5] # True 0 in [1, 2, 3, 4, 5] # False 0 not in [1, 2, 3, 4, 5] # True
相关函数
len(list)
python# 获取列表长度 len([1, 2, 3, 4]) # 4
list()
: 可以将range()
转为一个列表pythonlist(range(1,5)) # [1,2,3,4]
sum(list)
: 获取列表内累加值pythonsum([1, 2, 3, 4]) # 10
max(list)
&min(list)
: 获取最大/最小值pythonmax([1, 2, 3, 4]) # 4 min([1, 2, 3, 4]) # 1
for i in list
: 循环遍历对象pythonlist_ = [1, 2, 3, 4, 5, 6, 7, 8] for i in list_[::2]: print(i,end=' ') # 1 3 5 7
也可以遍历切片
列表解析
一种特殊的列表生成方式
list_ = [i**2 for i in range(1, 10)]
## list_ = [1, 4, 9, 16, 25, 36, 49, 64, 81]
range()
range()
用法和list
用法类似,但不是一个 list 对象
type(range(10))
## <class 'range'> 不是list对象
## 可以通过list()函数获得其对应的列表
list(range(1,5))
## [1,2,3,4]
元组
比较像不可改变的数组
除了不能直接改变元素之外其余都和数组一样
## 用圆括号定义元组
tuple_ = (1, 2, 3)
print(tuple_[0]) # 1
tuple_[1] = 2 # 会报错
字典
定义一个键值对
键需要带引号
dic = {
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6
}
## 创建空字典
dic_empty = {}
引用
dic['a']
## 1
增删改查
增/改
python# 直接加就行 dic['z'] = 255 dic['str'] = 'test'
删
pythondel dic['b']
遍历字典
.items()/.keys()/.values()
这三个函数都返回一个类似列表的对象
通过 for 的方式可以遍历他们,list()
函数也可以处理他们
键值遍历
pythonfor key,num in dic.items(): # key传入了键,num传入了对应的值 print(key+' '+str(num),end='|') # a 1|b 2|c 3|d 4|e 5|f 6|z 255|
键遍历
pythonfor key in dic.keys(): print(key,end='|') # a|b|c|d|e|f|z| # 按序键遍历 for key in sorted(dic.keys()): print(key,end='|')
值遍历
pythonfor val in dic.values(): print(val,end='|') # 1|2|3|4|5|6|255| # 获取一个不重复的值的集合 set(dic.values())
Python 内置函数
input()&print()
input()
input("\n\n按下 enter 键后退出。")
print()
## 使用print输出
## print啥都可以扔
print("emm")
## 直接输出数组
print([1,2,3,4,5])
## 键值对
print({"k":3}.items())
## 数字参杂文字输出
print("print:{}".format(1))
## print:1
## 多个参杂
print("print: {} and {}".format(1,2))
print(f"print: {1} and {2}")
## print: 1 and 2
## 精度输出
print('{:.2f}'.format(3.1415926))
## 3.14
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
## 不换行输出,并在结尾添加一个空格
print( x, end=" " )
eval()
eval()
函数用来执行一个字符串表达式,并返回表达式的值
eval(expression[, globals[, locals]])
- expression -- 表达式
- globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象
- locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象
>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85
sorted()
sorted 可以对所有可迭代的对象进行排序操作。
sorted(iterable, cmp=None, key=None, reverse=False)
- iterable -- 可迭代对象。
- cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回 1,小于则返回-1,等于则返回 0。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
set()
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
class set([iterable])
- iterable -- 可迭代对象对象;
x = set('runoob')
y = set('google')
x, y
## {'b', 'r', 'u', 'o', 'n'}, {'e', 'o', 'g', 'l'}
## 重复的被删除
x & y # 交集
## set(['o'])
x | y # 并集
## {'b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'}
x - y # 差集
## {'b', 'r', 'n', 'u'}
x ^ y #补集
## {'r', 'e', 'n', 'b', 'g', 'u', 'l'}
## 这是set的表示形式
数学
pow(a,b)函数
求 a^b^
进制
十进制:1010, 99, -217
二进制,以 0b 或 0B 开头:0b010, -0B101
八进制,以 0o 或 0O 开头:0o123, -0O456
十六进制,以 0x 或 0X 开头:0x9a, -0X89
浮点数
取值范围数量级约-10^307^至 10^308^ ,精度数量级 10^-16^
小数用二进制表示时会失去一定的精度,导致计算出错
0.1+0.2
0.30000000000000004
0.1 + 0.2 == 0.3
False
round(0.1+0.2, 1) == 0.3
True
浮点数可以用科学计数法表示
4.3e-3 值为 0.0043
9.6E5 值为 960000.0
round()函数
round(number,digits)
参数:
digits>0,四舍五入到指定的小数位
digits=0, 四舍五入到最接近的整数
digits<0 ,在小数点左侧进行四舍五入
如果round()函数只有number这个参数,等同于digits=0
四舍五入规则:
要求保留位数的后一位<=4,则进位,如round(5.214,2)保留小数点后两位,结果是 5.21
要求保留位数的后一位“=5”,且该位数后面没有数字,则不进位,如round(5.215,2),结果为5.21
要求保留位数的后一位“=5”,且该位数后面有数字,则进位,如round(5.2151,2),结果为5.22
要求保留位数的后一位“>=6”,则进位。如round(5.216,2),结果为5.22
虚数也可以用
1+2j
计算
x / y
除,x 与 y 之商 10/3 结果是 3.3333333333333335
x // y
整数除,x 与 y 之整数商 10//3 结果是 3
x%y
余数,模运算 10%3 结果是 1
x ** y
幂运算,x 的 y 次幂,x^y^
当 y 是小数时,开方运算 10**0.5 结果是 𝟏
abs(x) | 绝对值,的绝对值 abs(-10.01)结果为 10.01 |
---|---|
divmod(x,y) | 商余,(x//y,x%y),同时输出商和余数 divmod(10,3)结果为(3,1) |
pow(x, y[, z]) | 幂余,(x**y)%z,[..]表示参数 z 可省略 pow(3, pow(3, 99), 10000) 结果为 4587 |
round(x[, d]) | 四舍五入,d 是保留小数位数,默认值为 0 round(-10.123, 2) 结果为-10.12 |
max(X1,X2,…Xn) | 最大值,返回 X1,X2,…,X 中的最大值,不限 max(1,9,5,4,3)结果为 9 |
min(x1 ,x2 , … ,xn ) | 最小值,返回 x1 ,x2 , …,xn 中的最小值,n 不限 min(1, 9, 5, 4, 3) 结果为 1 |
int(x) | 将 x 变成整数,舍弃小数部分 int(123.45) 结果为 123;int("123") 结果为 123 |
float(x) | 将 x 变成浮点数,增加小数部分 float(12)结果为 12.0;f1oat("1.23")结果为 1.23 |
complex(x) | 将 x 变成复数,增加虚数部分 complex(4)结果为 4+0j |
other
"\b"回退 "\n"换行(光标移动到下行首) "\r" 回车(光标移动到本行首)
hex(x) 或 oct(x)
整数 x 的十六进制或八进制小写形式字符串 hex(425)结果为"0x1a9"oct(425)结果为"0o651"
chr(u) x 为 Unicode 编码,返回其对应的字符 ord(x) x 为字符,返回其对应的 Unicodes 编码