python基础用法梳理

如果想要深入学习python,推荐进入官网教程进行学习:https://docs.python.org/zh-cn/3/tutorial/


1. 基础语法

1.1 标识符

  • 第一个字符必须是字母表中字母或下划线 _ 。
  • 标识符的其他的部分由字母、数字和下划线组成。
  • 标识符对大小写敏感。

在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。如下:

= 3
print()

输出:

3

1.2 python保留字

保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:

import keyword
print(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’]

1.3 注释

  • 单行注释
# 第一个注释
print("Hello, Python!")  # 第二个注释
  • 多行注释
"""
这是多行注释!!!
这是多行注释!!!
"""
print ("Hello, Python!")

1.4 行与缩进

python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:

if True:
    print ("True")
else:
    print ("False")

1.5 多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:

total = item_one + \
        item_two + \
        item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']

1.6 数字(Number)类型

python中数字有四种类型:整数、布尔型、浮点数和复数。

  • int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
  • bool (布尔), 如 True。
  • float (浮点数), 如 1.23、3E-2
  • complex (复数), 如 1 + 2j、 1.1 + 2.2j

1.7 字符串(String)

  • python中单引号和双引号使用完全相同。
  • 使用三引号(’’'或""")可以指定一个多行字符串
  • 转义符 ‘’
  • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
  • 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
  • 字符串可以用 + 运算符连接在一起,用 * 运算符重复
  • Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
  • Python中的字符串不能改变。
  • Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
  • 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
str = 'Runoob'

print(str)  # 输出字符串
print(str[0:-1])  # 输出第一个到倒数第二个的所有字符
print(str[0])  # 输出字符串第一个字符
print(str[2:5])  # 输出从第三个开始到第五个的字符
print(str[2:])  # 输出从第三个开始后的所有字符
print(str[1:5:2])  # 输出从第二个开始到第五个且每隔两个的字符
print(str * 2)  # 输出字符串两次
print(str + '你好')  # 连接字符串

print('------------------------------')

print('hello\nrunoob')  # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nrunoob')  # 在字符串前面添加一个 r,表示原始字符串,不会发生转义

输出:

Runoob
Runoo
R
noo
noob
uo
RunoobRunoob
Runoob你好
------------------------------
hello
runoob
hello\nrunoob

1.8 空行

书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

1.9 等待用户输入

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

1.10 同一行显示多条语句

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割。

import sys; x = 'runoob'; sys.stdout.write(x + '\n')

输出:

runoob

1.11 多个语句组成代码组

python缩进相同的一组语句构成一个代码块,我们称之为代码组。

像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。

if expression : 
   suite
elif expression : 
   suite 
else : 
   suite

1.12 print输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":

x = "a"
y = "b"
# 换行输出
print(x)
print(y)

print('---------')
# 不换行输出
print(x, end=" ")
print(y, end=" ")
print()

输出:

a
b
---------
a b 

1.13 import与from…import

  • 将整个模块(somemodule)导入,格式为: import somemodule
  • 从某个模块中导入某个函数,格式为: from somemodule import somefunction
  • 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
  • 将某个模块中的全部函数导入,格式为: from somemodule import *

加入模块时,使用函数时需要加入模块名,加入函数则不需要模块的名字:

import sys
print ('\n python 路径为',sys.path)

from sys import path  #  导入特定的成员
print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path

2. 基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型

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

print (counter)
print (miles)
print (name)

还可以通过下列方式对变量赋值:

a = b = c = 1 # 创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。
a, b, c = 1, 2, "runoob" #两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。

python3中有6个标准数据类型:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

可以使用type()函数查询变量所指的对象类型。

a, b, c, d = 20, 5.5, True, 4+3j
print(type(a), type(b), type(c), type(d))

输出:

<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

此外还可以用 isinstance 来判断:

a = 111
b = isinstance(a, int)
print(b) # 输出true

type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。

2.1 Number数字

2.1.1 数字的表示形式

Python3 支持 int、float、bool、complex(复数)。

  • int(x) 将x转换为一个整数。
  • float(x) 将x转换到一个浮点数。
  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

除了标准类型外,还可以使用十六进制和八进制来代表整数:

number = 0xA0F # 十六进制
print(number)
number = 0o37 # 八进制
print(number)

输出:

2575
31

float的表示可以使用小数形式也可以使用E表示法

a = -32.54e100
b = 32.3e+18
c = 	70.2E-12
d = 15.4

复数可以使用a+bj,或者complex(a, b)表示

b = 9.322e-36j
print(b)
a = complex(3, 3.4)
print(a)

2.1.2 算术运算

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,丢弃小数部分,得到的类型和分子分母形式有关
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32

一个变量可以通过赋值指向不同类型的对象。

a = 3
print(type(a))
a = 3.2 #改为float类型
print(type(a))

输出:

<class 'int'>
<class 'float'>

2.1.3 数学函数

abs(x)返回数字的绝对值,如abs(-10) 返回 10,可以是整数、浮点数和复数,内置函数
ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5
floor(x)返回数字的下舍整数,如math.floor(4.9)返回 4
exp(x)返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x)返回数字的绝对值,如math.fabs(-10) 返回10.0,不能用于复数
log(x)如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x)返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,…)返回给定参数的最大值,参数可以为序列。
min(x1, x2,…)返回给定参数的最小值,参数可以为序列。
pow(x, y)x**y 运算后的值。
sqrt(x)返回数字x的平方根。
sin(x)返回的x弧度的正弦值。
asin(x)返回x的反正弦弧度值。
degrees(x)将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x)将角度转换为弧度
pi数学常量 pi(圆周率,一般以π来表示)
e数学常量 e,e即自然常数(自然常数)。

2.2 字符串

上面1.7中已经介绍了部分string类型。

Python中的字符串用单引号 ’ 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:

变量[头下标:尾下标]

2.2.1 字符串运算符

下表实例变量 a 值为字符串 “Hello”,b 变量值为 “Python”:在这里插入图片描述

2.2.2 字符串格式化

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 是小数点后的位数(如果可用的话)

例如:

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

输出:

我叫 小明 今年 10 岁!

2.2.3 三引号

python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。实例如下:

para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)

输出:

这是一个多行字符串的实例
多行字符串可以使用制表符
TAB (    )。
也可以使用换行符 [ 
 ]

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。

一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。

errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')

2.2.4 f-string

f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。

f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:

name = 'Runoob'
a = f'Hello {name}'  # 替换变量
b = f'{1+2}'         # 使用表达式
print(a)
print(b)

输出:

Hello Runoob
3

2.2.5 Unicode字符串

在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。

在Python3中,所有的字符串都是Unicode字符串。

2.2.6 字符串的内建函数

函数解释
capitalize()将字符串的第一个字符转换为大写
count(str, beg= 0,end=len(string))返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
find(str, beg=0, end=len(string))检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
isalpha()如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
isdigit()如果字符串只包含数字则返回 True 否则返回 False…
islower()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False
isupper()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
len(string)返回字符串长度
max(str)返回字符串 str 中最大的字母。
min(str)返回字符串 str 中最小的字母。
isdecimal()检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

2.3 列表

序列是 Python 中最基本的数据结构。序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。Python 有 6 个序列的内置类型,但最常见的是列表和元组。

2.3.1 定义和访问

列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。举例如下:

list1 = ['Google', 'Runoob', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']

定义和访问形式如下:

list = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print( list[-1] ) # 输出:black
print(list[0])# 输出:red
print(list[0:2]) # 左闭右开,输出:['red', 'green']

2.3.2 添加、更新和删除

添加append在后面介绍,下面介绍更新和删除

list = ['Google', 'Runoob', 1997, 2000]

print("第三个元素为 : ", list[2])
list[2] = 2001 #更新数据
print("更新后的第三个元素为 : ", list[2])
print ("原始列表 : ", list)
del list[2]# 删除
print ("删除第三个元素后 : ", list)

输出:

第三个元素为 :  1997
更新后的第三个元素为 :  2001
原始列表 :  ['Google', 'Runoob', 2001, 2000]
删除第三个元素后 :  ['Google', 'Runoob', 2000]

2.3.3 python列表脚本操作符

Python 表达式结果描述
len([1, 2, 3])3长度
[1, 2, 3] + [4, 5, 6][1, 2, 3, 4, 5, 6]组合,拼接
[‘Hi!’] * 4[‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’]重复
3 in [1, 2, 3]True元素是否存在于列表中
for x in [1, 2, 3]: print(x, end=" ")1 2 3迭代

2.3.4 嵌套列表

a = ["a", "b", "c"]
n = [1, 2, 3]
x = [a, n]# 嵌套
print(x)
print(x[0])

输出:

[['a', 'b', 'c'], [1, 2, 3]]
['a', 'b', 'c']

2.3.5 列表函数和方法

python包含以下函数:

函数说明
len(list)列表元素个数
max(list)返回列表元素最大值
min(list)返回列表元素最小值
list(seq)将元组转换为列表

python包含以下方法:

方法说明
list.append(obj)在列表末尾添加新的对象
list.count(obj)统计某个元素在列表中出现的次数
list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj)将对象插入列表
list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj)移除列表中某个值的第一个匹配项
list.reverse()反向列表中元素
list.sort( key=None, reverse=False)对原列表进行排序
list.clear()清空列表
list.copy()复制列表

2.4 元组

Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号 ( ),列表使用方括号 [ ]。

2.4.1 元组的定义和访问

定义形式如下:

tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = "a", "b", "c", "d"   #  不需要括号也可以
tup3 = () #创建空元组
print(tup1)
print(tup2)
print(tup3)

输出:

('Google', 'Runoob', 1997, 2000)
('a', 'b', 'c', 'd')
()

元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

>>> tup1 = (50)
>>> type(tup1)     # 不加逗号,类型为整型
<class 'int'>

>>> tup1 = (50,)
>>> type(tup1)     # 加上逗号,类型为元组
<class 'tuple'>

元组可以使用下标索引来访问元组中的值,如下实例:

tup1 = ('Google', 'Runoob', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7)

print("tup1[0]: ", tup1[0])
print("tup2[1:5]: ", tup2[1:5])

输出:

tup1[0]:  Google
tup2[1:5]:  (2, 3, 4, 5)

2.4.2 元组的拼接和删除整个元组

可以使用"+"对元组进行拼接。元组不允许修改和删除,但是可以使用del删除整个元组:

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')

tup3 = tup1 + tup2
print (tup3)

del tup3#删除后,就不能打印tup3,否则会出现报错未定义

2.4.3 元组运算符

Python 表达式结果描述
len((1, 2, 3))3计算元素个数
(1, 2, 3) + (4, 5, 6)(1, 2, 3, 4, 5, 6)连接
(‘Hi!’,) * 4(‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’)复制
3 in (1, 2, 3)True元素是否存在
for x in (1, 2, 3): print (x,)1 2 3迭代

2.4.4 元组索引和截取

因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素。

tup = ('Google', 'Runoob', 'Taobao', 'Wiki', 'Weibo','Weixin')
print(tup[1])
print(tup[-2])
print(tup[1:])
print(tup[1:4])

输出:

Runoob
Weibo
('Runoob', 'Taobao', 'Wiki', 'Weibo', 'Weixin')
('Runoob', 'Taobao', 'Wiki')

2.4.5 元组内置函数

方法描述
len(tuple)计算元组元素个数。
max(tuple)返回元组中元素最大值。
min(tuple)返回元组中元素最小值。
tuple(iterable)将可迭代系列转换为元组。例如列表

2.5 字典

字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 。表示如下:

d = {key1 : value1, key2 : value2, key3 : value3 }
  • 键必须是唯一的,但值则不必。如果有两个键,相当于修改键对应的值。
  • 值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
  • 字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

2.5.1 定义和访问

dict = {'Name': 'lucy', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])

输出:

dict['Name']:  lucy
dict['Age']:  7

2.5.2 修改和删除字典

dict = {'Name': 'lucy', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8               # 更新 Age
dict['School'] = "菜鸟教程"  # 添加信息
print("添加新元素后:")
print(dict)
del dict['Name'] # 删除键 'Name'
print("删除‘Name’后")
print(dict)
dict.clear#清空字典
del dict #删除字典

输出:

添加新元素后:
{'Name': 'lucy', 'Age': 8, 'Class': 'First', 'School': '菜鸟教程'}
删除‘Name’后
{'Age': 8, 'Class': 'First', 'School': '菜鸟教程'}

2.5.3 字典内置函数和方法

Python字典包含了以下内置函数:

函数描述
len(dict)计算字典元素个数,即键的总数。
str(dict)输出字典,以可打印的字符串表示。

Python字典包含了以下内置方法:

方法描述
key in dict如果键在字典dict里返回true,否则返回false
radiansdict.clear()删除字典内所有元素
radiansdict.copy()返回一个字典的浅复制
radiansdict.items()以列表返回可遍历的(键, 值) 元组数组
radiansdict.keys()返回一个迭代器,可以使用 list() 来转换为列表
radiansdict.values()返回一个迭代器,可以使用 list() 来转换为列表
pop(key[,default])删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
popitem()随机返回并删除字典中的最后一对键和值。

2.6 集合

集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合。

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

parame = {value01,value02,...}
或者
set(value)

2.6.1 集合的运算

a = {'a', 'r', 'b', 'c', 'd'}
b = set('alacazam')
print("a: ", a)
print("b:", b)
print("a - b: ", a - b)# a中有,b中没有的元素
print("a & b", a & b) #交集
print("a | b", a | b) # 并集
print("a ^ b:", a ^ b) # 不同时包含于a和b的元素

输出:

a:  {'d', 'a', 'c', 'r', 'b'}
b: {'l', 'a', 'c', 'z', 'm'}
a - b:  {'d', 'r', 'b'}
a & b {'a', 'c'}
a | b {'d', 'm', 'l', 'z', 'a', 'c', 'r', 'b'}
a ^ b: {'d', 'z', 'r', 'l', 'm', 'b'}

2.6.2 添加和删除元素

thisset = set(("Google", "baidu", "Taobao"))
thisset.add("Facebook") # 添加元素
thisset.update({1,3})# 添加元素,参数可以是列表,元组,字典等
thisset.remove("baidu")# 删除元素,不存在则报错
thisset.discard("baidu")# 删除元素,不存在不会报错
thisset.pop()# 随机删除一个元素
print(thisset)

集合内置方法列表:

方法描述
add()为集合添加元素
clear()移除集合中的所有元素
copy()拷贝一个集合
difference()返回多个集合的差集
difference_update()移除集合中的元素,该元素在指定的集合也存在。
discard()删除集合中指定的元素
intersection()返回集合的交集
intersection_update()返回集合的交集。
isdisjoint()判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset()判断指定集合是否为该方法参数集合的子集。
issuperset()判断该方法的参数集合是否为指定集合的子集
pop()随机移除元素
remove()移除指定元素
symmetric_difference()返回两个集合中不重复的元素集合。
symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union()返回两个集合的并集
update()给集合添加元素

3. 条件控制

Python中if语句的一般形式如下所示:

if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3

1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在Python中没有switch – case语句。

代码例子:

age = int(input("请输入你家狗狗的年龄: "))
print("")
if age <= 0:
    print("你是在逗我吧!")
elif age == 1:
    print("相当于 14 岁的人。")
elif age == 2:
    print("相当于 22 岁的人。")
elif age > 2:
    human = 22 + (age - 2) * 5
    print("对应人类年龄: ", human)

### 退出提示
input("点击 enter 键退出")

以下为if中常用的关系运算符:

操作符描述
<小于
<=小于或等于
>大于
>=大于或等于
==等于,比较两个值是否相等
!=不等于

三个逻辑运算符:

符号说明语法
and两个都成立才返回True 条件1 and 条件2
or两个只要有一个满足就返回True 条件1 or 条件2
not对条件取反 not 条件

4. 循环语句

4.1 while循环

Python 中 while 语句的一般形式:

while 判断条件(condition):
    执行语句(statements)……

下列为求和代码:

n = 100
sum = 0
counter = 1
while counter <= n:
    sum = sum + counter
    counter += 1

print("1 到 %d 之和为: %d" % (n, sum))

输出:

1100 之和为: 5050

4.2 while 循环使用 else 语句

在 while … else 在条件语句为 false 时执行 else 的语句块。语法格式如下:

while <expr>:
    <statement(s)>
else:
    <additional_statement(s)>

示例代码:

count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")

输出:

0  小于 5
1  小于 5
2  小于 5
3  小于 5
4  小于 5
5  大于或等于 5

4.2 for语句

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

for <variable> in <sequence>:
    <statements>
else:
    <statements>

下列为列表循环示例:

languages = ["C", "C++", "Perl", "Python"]
for x in languages:
    print(x)

输出:

C
C++
Perl
Python

以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体(还可以使用continue来继续下一次循环):

sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
    if site == "Runoob":
        print("菜鸟教程!")
        break
    print("循环数据 " + site)
else:
    print("没有循环数据!")
print("完成循环!")

输出:

循环数据 Baidu
循环数据 Google
菜鸟教程!
完成循环!

如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如:

for i in range(5): # 输出0-4
    print(i)

for i in range(5,9) : #指定区域遍历5 - 8,左闭右开
    print(i)

for i in range(0, 10, 2) :# 0 - 9 ,左闭右开,步长为2(间隔1)
    print(i)
for i in range(-10, -100, -30) : #还可以输出负数
    print(i)

还可以使用range()创建一个列表:

list(range(5))

python还有pass语句,它不作任何操作,其实就相当于空语句。

5. 迭代器与生成器

5.1 迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器有两个基本的方法:iter() 和 next()。字符串,列表或元组对象都可用于创建迭代器。

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")

输出:

1 2 3 4

以上代码也可以通过next()函数实现:

import sys  # 引入 sys 模块

list = [1, 2, 3, 4]
it = iter(list)  # 创建迭代器对象

while True:
    try:
        print(next(it))
    except StopIteration:
        sys.exit()

5.2 迭代器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

import sys
 
def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

6. 函数

6.1 函数的定义与使用

函数的定义规则如下:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号 : 起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

一个简单的函数定义和调用如下:

def hello() : # 不带参数
    print("Hello World!")

def max(a, b):# 带参数
    if a > b:
        return a
    else:
        return b

hello()
a = 4
b = 5
print(max(a, b))

6.2 可变与不可变参数

  • 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a的值,相当于新生成了 a。
  • 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

我们知道在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

python 函数的参数传递:

  • 不可变类型:类似 C++ 的值传递,如整数、字符串、元组。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a) 内部修改 a 的值,则是新生成一个 a 的对象。
  • 可变类型:类似 C++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会受影响

(1)必需参数

必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

# 可写函数说明
def printme(str):
    "打印任何传入的字符串"
    print(str)
    return

# 调用 printme 函数,不加参数会报错
printme()

(2)关键字参数

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

# 可写函数说明
def printinfo(name, age):
    "打印任何传入的字符串"
    print("名字: ", name)
    print("年龄: ", age)
    return

# 调用printinfo函数
printinfo(age=50, name="runoob")

(3)默认参数

# 可写函数说明
def printinfo(name, age=35):
    "打印任何传入的字符串"
    print("名字: ", name)
    print("年龄: ", age)
    return

# 调用printinfo函数
printinfo(age=50, name="runoob")
print("------------------------")
printinfo(name="runoob") #使用默认参数

(4)不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:

def functionname([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]

代码举例:

# 可写函数说明
def printinfo(arg1, **vardict):
    "打印任何传入的参数"
    print("输出: ")
    print(arg1)
    print(vardict)

# 调用printinfo 函数
printinfo(1, a=2, b=3)

输出:

输出: 
1
{'a': 2, 'b': 3}

声明函数时,参数中星号 * 可以单独出现。如果单独出现星号 * 后的参数必须用关键字传入

6.3 匿名函数

python 使用 lambda 来创建匿名函数。所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

lambda函数只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

实现两个参数相加的代码举例如下:

# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print("相加后的值为 : ", sum(10, 20))

6.4 return语句

# 可写函数说明
def sum(arg1, arg2):
    # 返回2个参数的和."
    total = arg1 + arg2
    print("函数内 : ", total)
    return total

# 调用sum函数
total = sum(10, 20)
print("函数外 : ", total)

6.5 全局变量和局部变量

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。


参考:https://www.runoob.com/

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非晚非晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值