3 Star 0 Fork 0

七天 / note

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Python.md 32.88 KB
一键复制 编辑 原始数据 按行查看 历史
七天 提交于 2023-10-09 22:00 . 2023-10-09
bbe46e5815a2e4d9a7b8e3689902aa1c

Python

基础语法

标识符

  • 标识符由字母、数字和下划线组成
  • 标识符必须以字母或下划线开头
  • 标识符区分大小写

保留字不能用做标识符,python的保留字可以通过keyword模块获取

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', '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']

注释

Python中单行注释以 # 开头,如果需要多行注释,可以用多个#号,也可以使用3个单/双引号包裹

# 头部注释
print ("Hello, Python!") # 末尾注释
'''
多行注释
多行注释
'''
 
"""
多行注释
多行注释
"""

缩进

Python中不使用花括号 {} 来表示代码块,而是使用缩进,同一个代码块的语句必须使用相同的缩进

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
  print ("False")    # 缩进不一致,会导致运行错误

输入输出

输入

Python使用 input() 函数接受用户输入,输入函数会一直阻塞等待输入,直到键入Enter键

input函数可以接受参数,参数在输入前打印到控制台作为提示信息

input("\n按下 enter 键后退出。")

输出

Python使用 print() 函数输出到控制台,默认输出是换行的,如果希望关闭自动关行可以在末尾加上 end=""

x=1
# 换行输出
print(x)
print("hello")
# 不换行输出
print(x,end="")

模块导入

使用 import 关键字导入模块,有两种导入方式

  • 导入整个模块

    # 导入整个模块
    import module
  • 导入函数

    # 导入某个函数
    from module import function
    # 导入多个函数
    from module import function1,function2,...
    # 导入模块中的全部函数
    from module import *

在导入时可以给模块起一个别名,方便后续使用

import pandas as pd
pd.DataFrame(data)

占位语句

pass 表示一个占位语句,不做任何事情

# 定义一个空语句的函数
def sample(n_samples):
    pass

命令行参数

在python命令后加上参数可以查看一些基本信息

$ python3 -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser (also PYTHONDEBUG=x)
-E     : ignore environment variables (such as PYTHONPATH)
-h     : print this help message and exit

[ etc. ]

变量及数据类型

变量

Python中的变量赋值不需要声明类型,直接用 变量名=值 创建变量

counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串

Python允许同时为多个变量赋值

# 为多个变量赋相同的值
a = b = c = 1
# 为多个变量赋不同的值
a, b, c = 1, 2, "john"

标准数据类型

Python定义了5个标准的数据类型

  • Numbers 数字
  • String 字符串
  • List 列表
  • Tuple 元组
  • Dictionary 字典

数字

数字类型用于存储数值,是不可改变的数据类型,也就是说改变数字类型会分配一个新的对象

# 在指定一个值时,Number对象就会被创建
var1 = 1
var2 = 10

Python支持4中数字类型:

  • int 有符号整型(默认的数值类型)
  • long 长整型,也可以代表八进制和十六进制(需要显式加上后缀L
  • float 浮点型(需要显式加上小数点)
  • complex 复数

字符串

字符串是一串字符,可以使用 '" 来创建字符串(两者完全没有区别),也支持三引号 ''' ,允许一个字符串跨多行,用于复杂的字符串赋值

字符串支持以下运算符:

操作符 描述
+ 字符串连接
* 重复输出字符串
[] 通过索引获取字符串中字符
[ : ] 截取字符串中的一部分
in 成员运算符,如果字符串中包含给定的字符返回 True
not in 成员运算符,如果字符串中不包含给定的字符返回 True
r/R 作为原始字符串,所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

字符串索引

字串列表有2种取值顺序

  • 从左到右:索引从0开始,最大范围是字符串长度-1
  • 从右到左:索引从-1开始,最大范围是-字符串长度
Xnip2023-09-18_20-32-33

Python不支持char类型,单字符也被作为字符串,可以通过 字符串[索引值] 快速获取

字符串截取

截取字符串通过 [头下标:尾下标] 实现(不包含尾下标);如果不指定尾下标,则默认截取从头下标开始的整个字符串。Python截取可以接收第三个参数,参数作用是截取的步长(间隔位置)来截取字符串

Xnip2023-09-18_20-48-01

截取操作返回一个新的对象,不会改变原本的字符串对象(除非接收返回值,实际引用仍然发生了改变)

str = 'abcdef'
# 取第一个字符并输出
print(str[0])
# 等价于 str[-5:-2],结果为 'bcd'
str[1:4]
# 输出从第三个字符开始的字符串
print str[2:]      

字符串连接与重复

Python重载了字符串的 +* 运算,分别实现了连接重复 运算

str = 'Hello World!'
print str * 2       # 输出字符串两次
print str + "TEST"  # 输出连接的字符串

字符串格式化

Python可以使用 % 快速对带格式符的字符串进行格式化,类似Java的String.format()或C++的sprintf()

"formatString" % (args,...) 

python的常用格式控制符如下:

符 号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %F 和 %E 的简写
%p 用十六进制数格式化变量的地址

格式化时支持一些辅助符

符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能

字符串内建函数

  • min(str):返回字符串 str 中最小的字母
  • max(str):返回字符串 str 中最大的字母

字符串内建方法

列表

列表(list)是一个集合类,但一个列表中可以保存不同类型的数据,相当于Java中的 List<Object>

列表用 [ ] 标识,跟字符串一样,同样可以通过索引值获得对应位置的元素,也支持*+和切割运算(切割列表仍然不会影响原列表对象),还可以通过 object in [列表] 的方式判断列表中是否存在某元素

list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
 
print list               # 输出完整列表
print list[0]            # 输出列表的第一个元素
print list[1:3]          # 输出第二个至第三个元素 
print list[2:]           # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2       # 输出列表两次
print list + tinylist    # 打印组合的列表

列表的长度是可以变化的,可以动态地添加、删除、修改元素

添加

  • list.append(obj):在列表末尾添加元素
  • list.insert(index,obj):将元素插入到列表的指定位置
  • list.extend(list):在列表末尾一次性追加另一个列表中的多个值

修改

直接通过索引值修改元素,列表会直接受到影响

list = [ 1, 2, 3]
list[0] = 10
# [10,2,3]
print(list) 

删除

通过 del 函数配合索引,可以删除指定位置的列表元素,之后的元素会整体前移

list = [ 1, 2, 3]
del list[1]
# [1,3]
print(list) 

通过list.remove(obj) 函数可以移除列表中某个值的第一个匹配项

列表内置函数

  • cmp(list1, list2):比较两个列表的元素
  • len(list):列表元素个数
  • min(list):返回列表元素最小值
  • max(list):返回列表元素最大值
  • list(seq):将序列转换成列表

列表内置方法

  • list.count(obj):统计某个元素在列表中出现的次数
  • list.index(obj):从列表中找出某个值第一个匹配项的索引位置
  • list.reverse():反向列表中元素(原列表对象会发生改变)
  • list.pop(index=-1):移除列表中的一个元素并返回该元素的值(默认最后一个元素,相当于出栈)
  • list.sort([func]):对原列表进行排序(原列表对象会发生改变)

元组

元组(tuple)类似于列表,区别是元组不能二次赋值,相当于只读列表

元组用 ( ) 标识,内部元素用逗号分隔,大致的使用方法也和列表类似

如果声明时元组中只包含一个元素,需要在元素后添加逗号

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
 
print tuple               # 输出完整元组
print tuple[0]            # 输出元组的第一个元素
print tuple[1:3]          # 输出第二个至第四个(不包含)的元素 
print tuple[2:]           # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2       # 输出元组两次
print tuple + tinytuple   # 打印组合的元组

以下对元组的操作是无效的,因为元组不允许更新

# 赋值操作会出错
tuple[0] = 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

元组内置函数

  • cmp(tuple1, tuple2):比较两个元组的元素
  • len(tuple):元组元素个数
  • min(tuple):返回元组元素最小值
  • max(tuple):返回元组元素最大值
  • tuple(seq):将序列转换为元组

字典

字典(dictionary)是无序的对象集合,而列表是有序的对象集合。字典中的元素是通过键(key)使用的,而不是索引,且key不可变,也不允许重复(相当于Java中的Map)。通过 keys()values() 方法可以得到字典的所有键或所有值的集合

字典用 { } 标识,由键值对组成,形式与Json类似

访问字典

tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}
 
print tinydict[key]        # 输出键为'key'的值
print tinydict             # 输出完整的字典
print tinydict.keys()      # 输出所有键
print tinydict.values()    # 输出所有值

修改字典

tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
 
tinydict['Age'] = 8 # 更新
tinydict['School'] = "RUNOOB" # 添加

删除字典

# 删除key对应的元素
del dict[key]
# 清空字典
dict.clear()
# 删除字典
del dict

字典内置函数

  • cmp(dict1,dict2):比较两个字典的元素
  • len(dict):计算字典的元素个数
  • str(dict):输出字典的字符串表示

字典内置方法

  • dict.clear():删除字典内的所有元素,相当于清空
  • dict.copy():返回一个字典的浅拷贝
  • dict.fromkeys(seq[,val]):创建一个新字典,以序列seq中的元素作为key,value为字典所有键对应的值
  • dict.get(key,default=None):返回指定键的值,如果不存在则返回default值
  • dict.has_key(key):判断key是否存在(python3不支持)
  • dict.items():返回键值对元组的数组(相当于Java的entrySet方法)
  • dict.keys():返回字典中的所有键
  • dict.values():返回字典中的所有值
  • dict.setdefault(key,default=None):和get类似,但如果key不存在,则会添加key并将value设置为default
  • dict.update(dict2):将参数中字典的键值对更新到字典中
  • dict.pop(key[,default]):删除字典中key对应的键值对,返回值为被删除的值。如果key不存在则返回default值
  • dict.popitem():返回并删除字典中的最后一对键值对(类似出栈)

类型转换

数据类型的转换基本只需将数据类型作为函数名使用,这些函数返回一个新的对象,表示转换的值

函数 描述
int(x [,base]) 将x转换为一个整数
long(x [,base] ) 将x转换为一个长整数
float(x) 将x转换到一个浮点数
complex(real [,imag]) 创建一个复数
str(x) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
set(s) 转换为可变集合
dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s) 转换为不可变集合
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为Unicode字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

运算符

算数运算符

运算符 描述
+ 加:两个对象相加
- 减:得到负数或是一个数减去另一个数
* 乘:两个数相乘或是返回一个被重复若干次的字符串
/ 除:x除以y
% 取模:返回除法的余数
** 幂:返回x的y次幂
// 取整除:返回商的整数部分(向下取整)

比较运算符

运算符 描述
== 等于:比较对象是否相等
!= 不等于:比较两个对象是否不相等
<> 不等于:比较两个对象是否不相等(python3 已废弃)
> 大于:返回x是否大于y
< 小于:返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量 TrueFalse 等价
>= 大于等于:返回x是否大于等于y
<= 小于等于:返回x是否小于等于y

赋值运算符

运算符 描述
= 简单的赋值运算符
+= 加法赋值运算符
-= 减法赋值运算符
*= 乘法赋值运算符
/= 除法赋值运算符
%= 取模赋值运算符
**= 幂赋值运算符
//= 取整除赋值运算符

位运算符

运算符 描述
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^ 按位异或运算符:当两对应的二进位相异时,结果为1
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1
<< 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数

逻辑运算符

运算符 逻辑表达式 描述
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
or x or y 布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

成员运算符

运算符 描述 实例
in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True
a = 10
b = 20
list = [1, 2, 3, 4, 5 ];
 
if ( a in list ):
   print "1 - 变量 a 在给定的列表中 list 中"
else:
   print "1 - 变量 a 不在给定的列表中 list 中"
 
if ( b not in list ):
   print "2 - 变量 b 不在给定的列表中 list 中"
else:
   print "2 - 变量 b 在给定的列表中 list 中"

身份运算符

运算符 描述 实例
is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) ,
如果引用的是同一个对象则返回 True,否则返回 False
is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。
如果引用的不是同一个对象则返回结果 True,否则返回 False。

id() 函数用于获取对象内存地址

is 用于判断两个变量引用对象是否为同一个,即是否是同一块内存空间(相当于Java的 == ); == 用于判断引用变量的值是否相等(相当于Java的 equals() 方法)

运算符优先级

运算符 描述
** 指数 (最高优先级)
~、+、- 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
*、/、%、// 乘,除,取模和取整除
+、- 加法减法
>>、<< 右移,左移运算符
& 位 'AND'
^、| 位运算符
<=、<、>、>= 比较运算符
<>、==、!= 等于运算符
=、%=、/=、//=、-=、+=、*=、**= 赋值运算符
is、is not 身份运算符
in、not in 成员运算符
not、and、or 逻辑运算符

流程控制

条件语句

在Python中,任何非0且非空的值为true,0或null为false

python不支持 switch 语句

if 判断条件1:
    执行语句块
elif 判断条件2:
  	执行语句块
elif 判断条件3:
  	执行语句块
...
else:
  	执行语句块

循环语句

Python提供了 for 循环和 while 循环

python不支持 do...while 循环

while循环

# else语句块会在循环正常执行完的情况下执行
# 如果通过 break 跳出循环,这个语句块将不会被执行
while 判断条件:
		执行语句块
else:
  	执行语句块

for循环

# else语句块用法同上
for 变量名 in 序列:
		执行语句块
else:
  	执行语句块

跳出循环

Python同样提供 breakcontinue 语句来跳出循环,用法也与其它语言类似,break用于终止整个循环,而continue只会跳出本次循环


函数

函数定义

自定义函数的规则如下:

  • 使用 def 关键字进行函数定义,后接函数名和圆括号 ()
  • 括号中间可以用于定义参数,任何形式参数和自变量必须放在括号中间
  • 函数体以 : 开始,并且需要缩进
  • return [返回值] 表示结束函数执行,如果没有返回值相当于返回None
  • 函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明
def functionname( parameters ):
   "函数注释说明"
   function_body
   return [expression]

函数调用

del 语句可以删除对象的引用(类似C++的delete

del var1[,var2,var3,...]
1
https://gitee.com/sevenday0107/note.git
git@gitee.com:sevenday0107/note.git
sevenday0107
note
note
master

搜索帮助