python教程-快速入门

目录:

一、python简介

1、什么是 Python?

Python 是一门流行的编程语言。它由 Guido van Rossum 创建,于 1991 年发布。

它用于:

  • Web 开发(服务器端)
  • 软件开发
  • 数学
  • 系统脚本


2、Python 可以做什么?

  • 可以在服务器上使用 Python 来创建 Web 应用程序。
  • Python 可以与软件一起使用来创建工作流。
  • Python 可以连接到数据库系统。它还可以读取和修改文件。
  • Python 可用于处理大数据并执行复杂的数学运算。
  • Python 可用于快速原型设计,也可用于生产就绪的软件开发。


3、为何选择 Python?

  • Python 适用于不同的平台(Windows、Mac、Linux、Raspberry Pi 等)。
  • Python 有一种类似于英语的简单语法。
  • Python 的语法允许开发人员用比其他编程语言更少的代码行编写程序。
  • Python 在解释器系统上运行,这意味着代码可以在编写后立即执行。这也意味着原型设计可以非常快。
  • Python 可以以程序方式、面向对象的方式或功能方式来处理。


4、python的集成开发环境

  • Thonny
  • Pycharm
  • Netbeans
  • Eclipse


二、python入门

1、Python 安装

先检查是否已在 Windows PC 上安装了 python,请在开始栏中寻找 Python 或在命令行(cmd.exe)上运行以下命令:

C:\Users\Your Name>python --version

如果您发现计算机上没有安装 python,则可以从以下网站免费下载:
https://www.python.org/


2、Python 快速入门

Python 是一门解释型编程语言,这意味着作为开发人员,您可以在文本编辑器中编写 Python(.py)文件,然后将这些文件放入 python 解释器中执行。

在命令行上运行 python 文件的方式如下:

C:\Users\Your Name>python C:\Users\Your Name\helloworld.py

其中 “helloworld.py” 是 python 的文件名,前面要加地址,不然找不到文件。

让我们编写第一个 Python 文件,名为 helloworld.py,它可以在任何文本编辑器中完成。

helloworld.py

print("Hello, World!")

输出:

Hello, World!

恭喜,您已经编写并执行了第一个 Python 程序。


3、Python 命令行

要在 python 中测试少量代码,在文件中写代码有时不是最快最简单的。把 Python 作为命令行来运行是可能的。

在 Windows、Mac 或 Linux 命令行上键入以下内容:

C:\Users\Your Name>python

在此,您可以编写任何 python,包括本教程前面的 hello world 例子:

C:\Users\Your Name>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, World!")

这将在命令行中输出 “Hello, World!”:

C:\Users\Your Name>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, World!")
Hello, World!

无论何时,您都可以通过键入如下命令来退出 python 命令行界面:

exit()

三、Python 语法

1、执行 Python 语法

正如我们在上一节中学习到的,可以直接在命令行中编写执行 Python 的语法:

>>> print("Hello, World!")
Hello, World!

或者通过在服务器上创建 python 文件,使用 .py 文件扩展名,并在命令行中运行它:

C:\Users\Your Name>python myfile.py

2、Python 缩进

缩进指的是代码行开头的空格。

在其他编程语言中,代码缩进仅出于可读性的考虑,而 Python 中的缩进非常重要。

Python 使用缩进来指示代码块。

实例

if 5 > 2:
  print("Five is greater than two!")

如果省略缩进,Python 会出错:

实例
语法错误:

if 5 > 2:
print("Five is greater than two!")

空格数取决于程序员,但至少需要一个。


3、Python 变量

在 Python 中,变量是在为其赋值时创建的:

实例
Python 中的变量:

x = 5
y = "Hello, World!"

Python 没有声明变量的命令。


4、注释

Python 拥有对文档内代码进行注释的功能。

注释以 # 开头(单行注释)或者放在三个""之间(多行注释):

实例
Python 中的注释:

#This is a comment.
print("Hello, World!")
"""
This is a comment1.
This is a comment2.
This is a comment3.
"""

四、Python 变量

1、创建变量

变量是存放数据值的容器。

与其他编程语言不同,Python 没有声明变量的命令。

首次为其赋值时,才会创建变量。

实例

x = 10
y = "Bill"
print(x)
print(y)

变量不需要使用任何特定类型声明,甚至可以在设置后更改其类型。

字符串变量可以使用单引号或双引号进行声明:

实例

x = "Bill"
is the same as
x = 'Bill'

2、变量名称

变量可以使用短名称(如 x 和 y)或更具描述性的名称(age、carname、total_volume)。
Python 变量命名规则:

  • 变量名必须以字母或下划线字符开头
  • 变量名称不能以数字开头
  • 变量名只能包含字母数字字符和下划线(A-z、0-9 和 _)
  • 变量名称区分大小写(age、Age 和 AGE 是三个不同的变量)

请记住,变量名称区分大小写


3、向多个变量赋值

Python 允许您在一行中为多个变量赋值:

实例

x, y, z = "Orange", "Banana", "Cherry"

您可以在一行中为多个变量分配相同的值:
实例

x = y = z = "Orange"

4、输出变量

Python 的 print 语句通常用于输出变量。

如需结合文本和变量,Python 使用 + 字符:

实例

x = "awesome"
print("Python is " + x)
输出结果:Python is awesome

您还可以使用 + 字符将变量与另一个变量相加:
实例

x = "Python is "
y = "awesome"
z =  x + y
print(z)
输出结果:Python is awesome

对于数字,+ 字符用作数学运算符:

实例

x = 5
y = 10
print(x + y)
输出结果:15

全局变量 在函数外部创建的变量(如上述所有实例所示)称为全局变量。

5、全局变量

可以被函数内部和外部的每个人使用。

实例
在函数外部创建变量,并在函数内部使用它:

x = "awesome"

def myfunc():
  print("Python is " + x)

myfunc()
输出结果:Python is awesome

如果在函数内部创建具有相同名称的变量,则该变量将是局部变量,并且只能在函数内部使用。具有相同名称的全局变量将保留原样,并拥有原始值。
实例
在函数内部创建一个与全局变量同名的变量:

x = "awesome"

def myfunc():
  x = "fantastic"
  print("Python is " + x)

myfunc()

print("Python is " + x)
输出结果:Python is fantastic
         Python is awesome

6、global 关键字

通常,在函数内部创建变量时,该变量是局部变量,只能在该函数内部使用。

在函数内部创建全局变量,您可以使用 global 关键字。

实例
如果您用了 global 关键字,则该变量属于全局范围:

def myfunc():
  global x
  x = "fantastic"

myfunc()

print("Python is " + x)
输出结果:Python is fantastic

另外,如果要在函数内部更改全局变量,请使用 global 关键字。

实例
在函数内部更改全局变量的值,请使用 global 关键字引用该变量:

x = "awesome"

def myfunc():
  global x
  x = "fantastic"

myfunc()

print("Python is " + x)
输出结果:Python is fantastic

五、Python 数据类型

1、内置数据类型

在编程中,数据类型是一个重要的概念。

变量可以存储不同类型的数据,并且不同类型可以执行不同的操作。

在这些类别中,Python 默认拥有以下内置数据类型:

文本类型:str
数值类型:int, float, complex
序列类型:list, tuple, range
映射类型:dict
集合类型:set, frozenset
布尔类型:bool
二进制类型:bytes, bytearray, memoryview

2、获取数据类型

您可以使用 type() 函数获取任何对象的数据类型:

实例
打印变量 x 的数据类型:

x = 10
print(type(x))

1、设置数据类型
在 Python 中,当您为变量赋值时,会设置数据类型:

示例数据类型
x = "Hello World"str字符串/文本
x = 29intInt 或整数是完整的数字,正数或负数,没有小数,长度不限。
x = 29.5float浮动或“浮点数”是包含小数的正数或负数。
x = 1jcomplex复数用 "j" 作为虚部编写:
x = ["apple", "banana", "cherry"]list数组
x = ("apple", "banana", "cherry")tuple元组
x = range(6)range
x = {"name" : "Bill", "age" : 63}dict字典
x = {"apple", "banana", "cherry"}set
x = frozenset({"apple", "banana", "cherry"})frozenset
x = Truebool布尔型
x = b"Hello"bytes
x = bytearray(5)bytearray
x = memoryview(bytes(5))memoryview
2设定特定的数据类型 如果希望指定数据类型,则您可以使用以下构造函数:
示例数据类型
x = str("Hello World")str
x = int(29)int
x = float(29.5)float
x = complex(1j)complex
x = list(("apple", "banana", "cherry"))list
x = tuple(("apple", "banana", "cherry"))tuple
x = range(6)range
x = dict(name="Bill", age=36)dict
x = set(("apple", "banana", "cherry"))set
x = frozenset({"apple", "banana", "cherry"})frozenset
x = bool(5)bool
x = bytes(5)bytes
x = bytearray(5)bytearray
x = memoryview(bytes(5))memoryview

3、随机数

Python 没有 random() 函数来创建随机数,但 Python 有一个名为 random 的内置模块,可用于生成随机数:

实例
导入 random 模块,并显示 1 到 9 之间的随机数:

import random
print(random.randrange(1,10))

六、Python 字符串

1、字符串字变量

python 中的字符串字面量由单引号或双引号括起。

‘hello’ 等同于 “hello”。

2、用字符串向变量赋值

通过使用变量名称后跟等号和字符串,可以把字符串赋值给变量:

实例

a = "Hello"
print(a)

3、多行字符串

您可以使用三个引号将多行字符串赋值给变量:

实例
您可以使用三个双引号或三个单引号:

a = """Python is a widely used general-purpose, high level programming language. 
It was initially designed by Guido van Rossum in 1991 
and developed by Python Software Foundation. 
It was mainly developed for emphasis on code readability, 
and its syntax allows programmers to express concepts in fewer lines of code."""
print(a)

4、字符串是数组

像许多其他流行的编程语言一样,Python 中的字符串是表示 unicode 字符的字节数组。

但是,Python 没有字符数据类型,单个字符就是长度为 1 的字符串。

方括号可用于访问字符串的元素。

实例
获取位置 1 处的字符(请记住第一个字符的位置为 0):

a = "Hello, World!"
print(a[1])

5、裁切

您可以使用裁切语法返回一定范围的字符。

指定开始索引和结束索引,以冒号分隔,以返回字符串的一部分。

实例
获取从位置 2 到位置 5(不包括)的字符:

b = "Hello, World!"
print(b[2:5])

6、负的索引

使用负索引从字符串末尾开始切片:

实例
获取从位置 5 到位置 1 的字符,从字符串末尾开始计数:

b = "Hello, World!"
print(b[-5:-2])
输出结果:orl

7、字符串长度

如需获取字符串的长度,请使用 len() 函数。

实例
len() 函数返回字符串的长度:

a = "Hello, World!"
print(len(a))

8、字符串方法

Python 有一组可用于字符串的内置方法。

实例1
strip() 方法删除开头和结尾的空白字符

a = "   Hello, World!   "
print(a.strip()) # returns "Hello, World!"

实例2
lower() 返回小写的字符串:

a = "Hello, World!"
print(a.lower())

实例3
upper() 方法返回大写的字符串:

a = "Hello, World!"
print(a.upper())

实例4
replace() 用另一段字符串来替换字符串:

a = "Hello, World!"
print(a.replace("World", "Kitty"))
返回结果:hello,kitty!

实例5
split() 方法在找到分隔符的实例时将字符串拆分为子字符串:

a = "Hello, World!"
print(a.split(",")) # returns ['Hello', ' World!']

9、检查字符串

如需检查字符串中是否存在特定短语或字符,我们可以使用 in 或 not in 关键字。

实例
检查以下文本中是否存在短语 “ina”:

txt = "China is a great country"
x = "ina" in txt
print(x) #返回结果:Ture

10、字符串级联(串联)

如需串联或组合两个字符串,您可以使用 + 运算符。

实例
将变量 a 与变量 b 合并到变量 c 中:

a = "Hello"
b = "World"
c = a + b
print(c)  #输出结果:HelloWorld

11、字符串格式(方法)

正如在 Python 变量一章中所学到的,我们不能像这样组合字符串和数字:

age = 63
txt = "My name is Bill, I am " + age
print(txt)

但是我们可以使用 format() 方法组合字符串和数字!

format() 方法接受传递的参数,格式化它们,并将它们放在占位符 {} 所在的字符串中:

实例
使用 format() 方法将数字插入字符串:

age = 63
txt = "My name is Bill, and I am {}"
print(txt.format(age))

format() 方法接受不限数量的参数,并放在各自的占位符中:

实例

quantity = 3
itemno = 567
price = 49.95
myorder = "I want {} pieces of item {} for {} dollars."
print(myorder.format(quantity, itemno, price))

您可以使用索引号 {0} 来确保参数被放在正确的占位符中:
实例

quantity = 3
itemno = 567
price = 49.95
myorder = "I want to pay {2} dollars for {0} pieces of item {1}."
print(myorder.format(quantity, itemno, price))

12、字符串方法

Python 有一组可以在字符串上使用的内建方法。

注释:所有字符串方法都返回新值。它们不会更改原始字符串。

方法描述
capitalize()把首字符转换为大写。
casefold()把字符串转换为小写。
center()返回居中的字符串。
count()返回指定值在字符串中出现的次数。
encode()返回字符串的编码版本。
endswith() 如果字符串以指定值结尾,则返回 true。
expandtabs() 设置字符串的 tab (\t)尺寸。
find() 在字符串中搜索指定的值并返回它被找到的位置。
format() 格式化字符串中的指定值。
format_map() 格式化字符串中的指定值。
index() 在字符串中搜索指定的值并返回它被找到的位置。
isalnum() 如果字符串中的所有字符都是字母数字,则返回 True。
isalpha() 如果字符串中的所有字符都在字母表中,则返回 True。
isdecimal() 如果字符串中的所有字符都是小数,则返回 True。
isdigit() 如果字符串中的所有字符都是数字,则返回 True。
isidentifier() 如果字符串是标识符,则返回 True。
islower() 如果字符串中的所有字符都是小写,则返回 True。
还有很多哦可以自取去查一查哦
注释:所有字符串方法都返回新值。它们不会更改原始字符串。

七、Python 运算符

运算符用于对变量和值执行操作。

Python 在以下组中划分运算符:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 身份运算符
  • 成员运算符
  • 位运算符

1、Python 算术运算符

算术运算符与数值一起使用来执行常见的数学运算:

运算符名称运算符名称
*/
+-
%取余**
//地板除(取整除)

2、Python 赋值运算符

赋值运算符用于为变量赋值:

运算符实例运算符实例
=x = 5+= x += 3
-= x -= 3*= x *= 3
/= x /= 3%= x %= 3
//= x //= 3**= x **= 3

3、Python 比较运算符

比较运算符用于比较两个值:

运算符实例运算符实例
==等于> 大于
!= 不等于< 小于
>= 大于或等于<= 小于或等于

4、Python 逻辑运算符

逻辑运算符用于组合条件语句:

运算符描述
and 如果两个语句都为真,则返回 True。
or 如果其中一个语句为真,则返回 True。
not 反转结果,如果结果为 true,则返回 False

5、Python 身份运算符

身份运算符用于比较对象,不是比较它们是否相等,但如果它们实际上是同一个对象,则具有相同的内存位置:

运算符描述
in 如果对象中存在具有指定值的序列,则返回 True。
not in 如果对象中不存在具有指定值的序列,则返回 True。

6、Python 位运算符

位运算符用于比较(二进制)数字:

运算符描述
& AND:如果两个位均为 1,则将每个位设为 1。
| OR:如果两位中的一位为 1,则将每个位设为 1。
^ XOR:如果两个位中只有一位为 1,则将每个位设为 1。
~ NOT:反转所有位。
<< Zero fill left shift:通过从右侧推入零来向左移动,推掉最左边的位。
>> Signed right shift:通过从左侧推入最左边的位的副本向右移动,推掉最右边的位。

八、Python 列表

1、Python 集合(数组)

Python 编程语言中有四种集合数据类型:

  • 列表(List)是一种有序和可更改的集合。允许重复的成员。
  • 元组(Tuple)是一种有序且不可更改的集合。允许重复的成员。
  • 集合(Set)是一个无序和无索引的集合。没有重复的成员。
  • 字典(Dictionary)是一个无序,可变和有索引的集合。没有重复的成员。
    选择集合类型时,了解该类型的属性很有用。

为特定数据集选择正确的类型可能意味着保留含义,并且可能意味着提高效率或安全性。

2、列表

列表是一个有序且可更改的集合。在 Python 中,列表用方括号编写。

实例
创建列表:

thislist = ["apple", "banana", "cherry"]
print(thislist)

3、访问项目

您可以通过引用索引号来访问列表项:

实例
打印列表的第二项:

thislist = ["apple", "banana", "cherry"]
print(thislist[1])

4、负的索引

负索引表示从末尾开始,-1 表示最后一个项目,-2 表示倒数第二个项目,依此类推。

实例
打印列表的最后一项:

thislist = ["apple", "banana", "cherry"]
print(thislist[-1])

5、索引范围

您可以通过指定范围的起点和终点来指定索引范围。

指定范围后,返回值将是包含指定项目的新列表。

实例
返回第三、第四、第五项:

thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:5])

注释:搜索将从索引 2(包括)开始,到索引 5(不包括)结束。

请记住,第一项的索引为 0。

6、负索引的范围

如果要从列表末尾开始搜索,请指定负索引:

实例
此例将返回从索引 -4(包括)到索引 -1(排除)的项目:

thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[-4:-1])

7、更改项目值

如需更改特定项目的值,请引用索引号:

实例
更改第二项:

thislist = ["apple", "banana", "cherry"]
thislist[1] = "mango"
print(thislist)

8、遍历列表

您可以使用 for 循环遍历列表项:

实例
逐个打印列表中的所有项目:

thislist = ["apple", "banana", "cherry"]
for x in thislist:
  print(x)

9、检查项目是否存在

如需确定列表中是否存在指定的项,请使用 in 关键字:

实例
检查列表中是否存在 “apple”:

thislist = ["apple", "banana", "cherry"]
if "apple" in thislist:
  print("Yes, 'apple' is in the fruits list")

10、列表长度

如需确定列表中有多少项,请使用 len() 方法:

实例
打印列表中的项目数:

thislist = ["apple", "banana", "cherry"]
print(len(thislist))

11、添加项目

如需将项目添加到列表的末尾,请使用 append() 方法:

实例
使用 append() 方法追加项目:

thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)

要在指定的索引处添加项目,请使用 insert() 方法:
实例
插入项目作为第二个位置:

thislist = ["apple", "banana", "cherry"]
thislist.insert(1, "orange")
print(thislist)

12、删除项目

有几种方法可以从列表中删除项目:

实例
remove() 方法删除指定的项目:

thislist = ["apple", "banana", "cherry"]
thislist.remove("banana")
print(thislist)

实例
pop() 方法删除指定的索引(如果未指定索引,则删除最后一项):

thislist = ["apple", "banana", "cherry"]
thislist.pop()
print(thislist)

实例
del 关键字删除指定的索引:

thislist = ["apple", "banana", "cherry"]
del thislist[0]
print(thislist)

实例
del 关键字也能完整地删除列表:

thislist = ["apple", "banana", "cherry"]
del thislist

实例
clear() 方法清空列表:

thislist = ["apple", "banana", "cherry"]
thislist.clear()
print(thislist)

13、复制列表

您只能通过键入 list2 = list1 来复制列表,因为:list2 将只是对 list1 的引用,list1 中所做的更改也将自动在 list2 中进行。

有一些方法可以进行复制,一种方法是使用内置的 List 方法 copy()。

实例
使用 copy() 方法来复制列表:

thislist = ["apple", "banana", "cherry"]
mylist = thislist.copy()
print(mylist)

制作副本的另一种方法是使用内建的方法 list()。

实例
使用 list() 方法复制列表:

thislist = ["apple", "banana", "cherry"]
mylist = list(thislist)
print(mylist)

14、合并两个列表

在 Python 中,有几种方法可以连接或串联两个或多个列表。

最简单的方法之一是使用 + 运算符。

实例
合并两个列表:

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]

list3 = list1 + list2
print(list3)

连接两个列表的另一种方法是将 list2 中的所有项一个接一个地追加到 list1 中:

实例
把 list2 追加到 list1 中:

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]

for x in list2:
  list1.append(x)

print(list1)

或者,您可以使用 extend() 方法,其目的是将一个列表中的元素添加到另一列表中:

实例
使用 extend() 方法将 list2 添加到 list1 的末尾:

list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]

list1.extend(list2)
print(list1)

15、list() 构造函数

也可以使用 list() 构造函数创建一个新列表。

实例
使用 list() 构造函数创建列表:

thislist = list(("apple", "banana", "cherry")) # 请注意双括号
print(thislist)

九、python集合(Set)

1、集合(set)

集合是无序和无索引的集合。在 Python 中,集合用花括号编写。

实例
创建集合:

thisset = {"apple", "banana", "cherry"}
print(thisset)

注释:集合是无序的,因此您无法确定项目的显示顺序。

2、访问项目

您无法通过引用索引来访问 set 中的项目,因为 set 是无序的,项目没有索引。

但是您可以使用 for 循环遍历 set 项目,或者使用 in 关键字查询集合中是否存在指定值。

实例
遍历集合,并打印值:

thisset = {"apple", "banana", "cherry"}

for x in thisset:
  print(x)

实例
检查 set 中是否存在 “banana”:

thisset = {"apple", "banana", "cherry"}
print("banana" in thisset)

3、更改项目

集合一旦创建,您就无法更改项目,但是您可以添加新项目。

4、添加项目

要将一个项添加到集合,请使用 add() 方法。

要向集合中添加多个项目,请使用 update() 方法。

实例
使用 add() 方法向 set 添加项目:

thisset = {"apple", "banana", "cherry"}
thisset.add("orange")
print(thisset)

实例
使用 update() 方法将多个项添加到集合中:

thisset = {"apple", "banana", "cherry"}
thisset.update(["orange", "mango", "grapes"])
print(thisset)

5、获取 Set 的长度

要确定集合中有多少项,请使用 len() 方法。

实例
获取集合中的项目数:

thisset = {"apple", "banana", "cherry"}
print(len(thisset))

6、删除项目

要删除集合中的项目,请使用 remove() 或 discard() 方法。

实例
使用 remove() 方法来删除 “banana”:

thisset = {"apple", "banana", "cherry"}
thisset.remove("banana")
print(thisset)

注释:如果要删除的项目不存在,则 remove() 将引发错误。

7、合并两个集合

在 Python 中,有几种方法可以连接两个或多个集合。

您可以使用 union() 方法返回包含两个集合中所有项目的新集合,也可以使用 update() 方法将一个集合中的所有项目插入另一个集合中:

实例
union() 方法返回一个新集合,其中包含两个集合中的所有项目:

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set3 = set1.union(set2)
print(set3)

实例
update() 方法将 set2 中的项目插入 set1 中:

set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}

set1.update(set2)
print(set1)

注释:union() 和 update() 都将排除任何重复项。

还有其他方法将两个集合连接起来,并且仅保留重复项,或者永远不保留重复项,请查看此页面底部的集合方法完整列表。

8、set() 构造函数

也可以使用 set() 构造函数来创建集合。

实例
使用 set() 构造函数来创建集合:

thisset = set(("apple", "banana", "cherry")) # 请留意这个双括号
print(thisset)

十、Python 字典

1、字典(Dictionary)

字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。

实例
创建并打印字典:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
print(thisdict)

2、访问项目

您可以通过在方括号内引用其键名来访问字典的项目:

实例
获取 “model” 键的值:

x = thisdict["model"]

还有一个名为 get() 的方法会给你相同的结果:

实例
获取 “model” 键的值:

x = thisdict.get("model")

3、更改值

您可以通过引用其键名来更改特定项的值:

实例
把 “year” 改为 2019:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
thisdict["year"] = 2019

4、遍历字典

您可以使用 for 循环遍历字典。

循环遍历字典时,返回值是字典的键,但也有返回值的方法。

实例
逐个打印字典中的所有键名:

for x in thisdict:
  print(x)

实例
逐个打印字典中的所有值:

for x in thisdict:
  print(thisdict[x])

实例
您还可以使用 values() 函数返回字典的值:

for x in thisdict.values():
  print(x)

实例
通过使用 items() 函数遍历键和值:

for x, y in thisdict.items():
  print(x, y)

5、检查键是否存在

要确定字典中是否存在指定的键,请使用 in 关键字:

实例
检查字典中是否存在 “model”:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
if "model" in thisdict:
  print("Yes, 'model' is one of the keys in the thisdict dictionary")

6、字典长度

要确定字典有多少项目(键值对),请使用 len() 方法。

实例
打印字典中的项目数:

print(len(thisdict))

7、添加项目

通过使用新的索引键并为其赋值,可以将项目添加到字典中:

实例

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
thisdict["color"] = "red"
print(thisdict)

8、删除项目

有几种方法可以从字典中删除项目:

实例
pop() 方法删除具有指定键名的项:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
thisdict.pop("model")
print(thisdict)

实例
popitem() 方法删除最后插入的项目(在 3.7 之前的版本中,删除随机项目):

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
thisdict.popitem()
print(thisdict)

实例
del 关键字删除具有指定键名的项目:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
del thisdict["model"]
print(thisdict)

实例
del 关键字也可以完全删除字典:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
del thisdict

print(thisdict) #this 会导致错误,因为 "thisdict" 不再存在。

实例
clear() 关键字清空字典:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
thisdict.clear()
print(thisdict) 

9、复制字典

您不能通过键入 dict2 = dict1 来复制字典,因为:dict2 只是对 dict1 的引用,而 dict1 中的更改也将自动在 dict2 中进行。

有一些方法可以进行复制,一种方法是使用内建的字典方法 copy()。

实例
使用 copy() 方法来复制字典:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
mydict = thisdict.copy()
print(mydict)

制作副本的另一种方法是使用内建方法 dict()。

实例
使用 dict() 方法创建字典的副本:

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
mydict = dict(thisdict)
print(mydict)

10、嵌套字典

词典也可以包含许多词典,这被称为嵌套词典。

实例
创建包含三个字典的字典:

myfamily = {
  "child1" : {
    "name" : "Phoebe Adele",
    "year" : 2002
  },
  "child2" : {
    "name" : "Jennifer Katharine",
    "year" : 1996
  },
  "child3" : {
    "name" : "Rory John",
    "year" : 1999
  }
}

11、dict() 构造函数

也可以使用 dict() 构造函数创建新的字典:

实例

thisdict = dict(brand="Porsche", model="911", year=1963)
#请注意,关键字不是字符串字面量 
#请注意,使用了等号而不是冒号来赋值
print(thisdict)

十一、 Python If … Else

1、Python 条件和 If 语句

Python 支持来自数学的常用逻辑条件:

等于:a == b
不等于:a != b
小于:a < b
小于等于:a <= b
大于:a > b
大于等于:a >= b
这些条件能够以多种方式使用,最常见的是“if 语句”和循环。

if 语句使用 if 关键词来写。

实例
If 语句:

a = 66
b = 200
if b > a:
  print("b is greater than a")

2、 Elif

elif 关键字是 python 对“如果之前的条件不正确,那么试试这个条件”的表达方式。

实例

a = 66
b = 66
if b > a:
  print("b is greater than a")
elif a == b:
  print("a and b are equal")

3、Else

else 关键字捕获未被之前的条件捕获的任何内容。

实例

a = 200
b = 66
if b > a:
  print("b is greater than a")
elif a == b:
  print("a and b are equal")
else:
  print("a is greater than b")

4、And

and 关键字是一个逻辑运算符,用于组合条件语句:

实例
测试 a 是否大于 b,且 c 是否大于 a:

a = 200
b = 66
c = 500
if a > b and c > a:
  print("Both conditions are True")

5、Or

or 关键字也是逻辑运算符,用于组合条件语句:

实例
测试 a 是否大于 b,或者 a 是否大于 c:

a = 200
b = 66
c = 500
if a > b or a > c:
  print("At least one of the conditions is True")

6、嵌套 If

您可以在 if 语句中包含 if 语句,这称为嵌套 if 语句。

实例

x = 52
if x > 10:
  print("Above ten,")
  if x > 20:
    print("and also above 20!")
  else:
    print("but not above 20.")

7、pass 语句

if 语句不能为空,但是如果您处于某种原因写了无内容的 if 语句,请使用 pass 语句来避免错误。

实例

a = 66
b = 200

if b > a:
  pass

十二、Python While 循环

1、Python 循环

Python 有两个原始的循环命令:

  • while 循环
  • for 循环
  • while 循环

如果使用 while 循环,只要条件为真,我们就可以执行一组语句。
实例
只要 i 大于 7,打印 i:

i = 1
while i < 7:
  print(i)
  i += 1

注释:请记得递增 i,否则循环会永远继续。
while 循环需要准备好相关的变量。在这个实例中,我们需要定义一个索引变量 i,我们将其设置为 1。

2、break 语句

如果使用 break 语句,即使 while 条件为真,我们也可以停止循环:

实例
在 i 等于 3 时退出循环:

i = 1
while i < 7:
  print(i)
  if i == 3:
    break
  i += 1

3、continue 语句

如果使用 continue 语句,我们可以停止当前的迭代,并继续下一个:

实例
如果 i 等于 3,则继续下一个迭代:

i = 0
while i < 7:
  i += 1 
  if i == 3:
    continue
  print(i)

4、else 语句

通过使用 else 语句,当条件不再成立时,我们可以运行一次代码块:

实例
条件为假时打印一条消息:

i = 1
while i < 6:
  print(i)
  i += 1
else:
  print("i is no longer less than 6")

十三、Python For 循环

1、Python For 循环

for 循环用于迭代序列(即列表,元组,字典,集合或字符串)。

这与其他编程语言中的 for 关键字不太相似,而是更像其他面向对象编程语言中的迭代器方法。

通过使用 for 循环,我们可以为列表、元组、集合中的每个项目等执行一组语句。

实例
打印 fruits 列表中的每种水果:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x)

提示:for 循环不需要预先设置索引变量。

2、循环遍历字符串

甚至连字符串都是可迭代的对象,它们包含一系列的字符:

实例
循环遍历单词 “banana” 中的字母:

for x in "banana":
  print(x)

3、break 语句

通过使用 break 语句,我们可以在循环遍历所有项目之前停止循环:

实例
如果 x 是 “banana”,则退出循环:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  print(x) 
  if x == "banana":
    break

4、continue 语句

通过使用 continue 语句,我们可以停止循环的当前迭代,并继续下一个:

实例
不打印香蕉:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
  if x == "banana":
    continue
  print(x)

5、range() 函数

如需循环一组代码指定的次数,我们可以使用 range() 函数,

range() 函数返回一个数字序列,默认情况下从 0 开始,并递增 1(默认地),并以指定的数字结束。

实例
使用 range() 函数:

for x in range(10):
  print(x)

注意:range(10) 不是 0 到 10 的值,而是值 0 到 9。
range() 函数默认 0 为起始值,不过可以通过添加参数来指定起始值:range(3, 10),这意味着值为 3 到 10(但不包括 10):
range() 函数默认将序列递增 1,但是可以通过添加第三个参数来指定增量值:range(2, 30, 3):

6、For 循环中的 Else

for 循环中的 else 关键字指定循环结束时要执行的代码块:

实例
打印 0 到 9 的所有数字,并在循环结束时打印一条消息:

for x in range(10):
  print(x)
else:
  print("Finally finished!")

7、嵌套循环

嵌套循环是循环内的循环。

“外循环”每迭代一次,“内循环”将执行一次:

实例
打印每个水果的每个形容词:

adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]

for x in adj:
  for y in fruits:
    print(x, y)

8、pass 语句

for 语句不能为空,但是如果您处于某种原因写了无内容的 for 语句,请使用 pass 语句来避免错误。

实例

for x in [0, 1, 2]:
  pass

十四、Python 函数

函数是一种仅在调用时运行的代码块。
您可以将数据(称为参数)传递到函数中。
函数可以把数据作为结果返回。

1、创建函数

在 Python 中,使用 def 关键字定义函数:

实例

def my_function():
  print("Hello from a function")

2、调用函数

如需调用函数,请使用函数名称后跟括号:

实例

def my_function():
  print("Hello from a function")

my_function()

3、参数

信息可以作为参数传递给函数。

参数在函数名后的括号内指定。您可以根据需要添加任意数量的参数,只需用逗号分隔即可。

下面的例子有一个带参数(fname)的函数。当调用此函数时,我们传递一个名字,在函数内部使用它来打印全名:

实例

def my_function(fname):
  print(fname + " Gates")

my_function("Rory John")
my_function("Jennifer Katharine")
my_function("Phoebe Adele")

4、默认参数值

下面的例子展示如何使用默认参数值。

如果我们调用了不带参数的函数,则使用默认值:

实例

def my_function(country = "China"):
  print("I am from " + country)

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")

5、以 List 传参

您发送到函数的参数可以是任何数据类型(字符串、数字、列表、字典等),并且在函数内其将被视为相同数据类型。

例如,如果您将 List 作为参数发送,它到达函数时仍将是 List(列表):

实例

def my_function(food):
  for x in food:
    print(x)

fruits = ["apple", "banana", "cherry"]

my_function(fruits)

6、返回值

如需使函数返回值,请使用 return 语句:

实例

def my_function(x):
  return 5 * x

print(my_function(3))
print(my_function(5))
print(my_function(9))

7、关键字参数

您还可以使用 key = value 语法发送参数。

参数的顺序无关紧要。

实例

def my_function(child3, child2, child1):
  print("The youngest child is " + child3)

my_function(child1 = "Phoebe", child2 = "Jennifer", child3 = "Rory")

在 Python 文档中,“关键字参数”一词通常简称为 kwargs。

8、任意参数

如果您不知道将传递给您的函数多少个参数,请在函数定义的参数名称前添加 *。

这样,函数将接收一个参数元组,并可以相应地访问各项:

实例
如果参数数目未知,请在参数名称前添加 *:

def my_function(*kids):
  print("The youngest child is " + kids[2])

my_function("Phoebe", "Jennifer", "Rory")

9、pass 语句

函数定义不能为空,但是如果您出于某种原因写了无内容的函数定义,请使用 pass 语句来避免错误。

实例

def myfunction:
  pass

10、递归

Python 也接受函数递归,这意味着定义的函数能够调用自身。

递归是一种常见的数学和编程概念。它意味着函数调用自身。这样做的好处是可以循环访问数据以达成结果。

开发人员应该非常小心递归,因为它可以很容易地编写一个永不终止的,或者使用过量内存或处理器能力的函数。但是,在被正确编写后,递归可能是一种非常有效且数学上优雅的编程方法。

在这个例子中,tri_recursion() 是我们定义为调用自身 (“recurse”) 的函数。我们使用 k 变量作为数据,每次递归时递减(-1)。当条件不大于 0 时(比如当它为 0 时),递归结束。

对于新的开发人员来说,可能需要一些时间来搞清楚其工作原理,最好的方法是测试并修改它。

实例
递归的例子:

def tri_recursion(k):
  if(k>0):
    result = k+tri_recursion(k-1)
    print(result)
  else:
    result = 0
  return result

print("\n\nRecursion Example Results")
tri_recursion(6)

十五、Python Lambda

lambda 函数是一种小的匿名函数。
lambda 函数可接受任意数量的参数,但只能有一个表达式。

语法

lambda arguments : expression

执行表达式并返回结果:

实例
一个 lambda 函数,它把作为参数传入的数字加 10,然后打印结果:

x = lambda a : a + 10
print(x(5))

lambda 函数可接受任意数量的参数:

实例
一个 lambda 函数,它把参数 a 与参数 b 相乘并打印结果:

x = lambda a, b : a * b
print(x(5, 6))

为何使用 Lambda 函数?

当您把 lambda 用作另一个函数内的匿名函数时,会更好地展现 lambda 的强大能力。

假设您有一个带一个参数的函数定义,并且该参数将乘以未知数字:

def myfunc(n):
  return lambda a : a * n

使用该函数定义来创建一个总是使所发送数字加倍的函数:

实例

def myfunc(n):
  return lambda a : a * n

mydoubler = myfunc(2)

print(mydoubler(11))

如果在短时间内需要匿名函数,请使用 lambda 函数。


十六、Python 数组

请注意,Python 没有内置对数组的支持,但可以使用 Python 列表代替。

1、数组

数组用于在单个变量中存储多个值:

实例
创建一个包含汽车品牌的数组:

cars = ["Porsche", "Volvo", "BMW"]

2、什么是数组?

数组是一种特殊变量,能够一次包含多个值。

如果您有一个项目列表(例如,汽车品牌列表),将牌子存储在单个变量中可能如下所示:

car1 = "Porsche"
car2 = "Volvo"
car3 = "BMW"

但是,如果您想遍历这些品牌并找到特定的汽车品牌怎么办?如果不是 3 辆车,而是 300 辆怎么办?

解决方案是数组!

数组可以在单个名称下保存多个值,您可以通过引用索引号来访问这些值。


十七、Python 类和对象

1、Python 类/对象

Python 是一种面向对象的编程语言。

Python 中的几乎所有东西都是对象,拥有属性和方法。

类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。

1、创建类

如需创建类,请使用 class 关键字:

实例
使用名为 x 的属性,创建一个名为 MyClass 的类:

class MyClass:
  x = 5

2、创建对象

现在我们可以使用名为 myClass 的类来创建对象:

实例
创建一个名为 p1 的对象,并打印 x 的值:

p1 = MyClass()
print(p1.x)

3、init() 函数

上面的例子是最简单形式的类和对象,在实际应用程序中并不真正有用。

要理解类的含义,我们必须先了解内置的 init() 函数。

所有类都有一个名为 init() 的函数,它始终在启动类时执行。

使用 init() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作:

实例
创建名为 Person 的类,使用 init() 函数为 name 和 age 赋值:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("Bill", 63)

print(p1.name)
print(p1.age)

注释:每次使用类创建新对象时,都会自动调用 init() 函数。

4、对象方法

对象也可以包含方法。对象中的方法是属于该对象的函数。

让我们在 Person 类中创建方法:

实例
插入一个打印问候语的函数,并在 p1 对象上执行它:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("Bill", 63)
p1.myfunc()

提示:self 参数是对类的当前实例的引用,用于访问属于该类的变量。

5、self 参数

self 参数是对类的当前实例的引用,用于访问属于该类的变量。

它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数:

实例
使用单词 mysillyobject 和 abc 代替 self:

class Person:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person("Bill", 63)
p1.myfunc()

6、修改对象属性

您可以这样修改对象的属性:

实例
把 p1 的年龄设置为 64:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("Bill", 63)

p1.age = 64

print(p1.age)

7、删除对象属性

您可以使用 del 关键字删除对象的属性:

实例
删除 p1 对象的 age 属性:

class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("Bill", 63)

del p1.age

print(p1.age)

8、删除对象

使用 del 关键字删除对象:

实例
删除 p1 对象:

del p1

9、pass 语句

类定义不能为空,但是如果您处于某种原因写了无内容的类定义语句,请使用 pass 语句来避免错误。

实例

class Person:
  pass

十八、Python 继承

1、Python 继承

继承允许我们定义继承另一个类的所有方法和属性的类。

父类是继承的类,也称为基类。

子类是从另一个类继承的类,也称为派生类。

2、创建父类

任何类都可以是父类,因此语法与创建任何其他类相同:

实例
创建一个名为 Person 的类,其中包含 firstname 和 lastname 属性以及 printname 方法:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

# 使用 Person 来创建对象,然后执行 printname 方法:

x = Person("Bill", "Gates")
x.printname()

3、创建子类

要创建从其他类继承功能的类,请在创建子类时将父类作为参数发送:

实例
创建一个名为 Student 的类,它将从 Person 类继承属性和方法:

class Student(Person):
  pass

注释:如果您不想向该类添加任何其他属性或方法,请使用 pass 关键字。

现在,Student 类拥有与 Person 类相同的属性和方法。

实例
使用 Student 类创建一个对象,然后执行 printname 方法:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

class Student(Person):
  pass

x = Student("Elon", "Musk")
x.printname()

4、添加 init() 函数

到目前为止,我们已经创建了一个子类,它继承了父类的属性和方法。

我们想要把 init() 函数添加到子类(而不是 pass 关键字)。

注释:每次使用类创建新对象时,都会自动调用 init() 函数。

实例
为 Student 类添加 init() 函数:

class Student(Person):
  def __init__(self, fname, lname):
# 添加属性等

当您添加 init() 函数时,子类将不再继承父的 init() 函数。

注释:子的 init() 函数会覆盖对父的 init() 函数的继承。

如需保持父的 init() 函数的继承,请添加对父的 init() 函数的调用:

实例

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

现在,我们已经成功添加了 init() 函数,并保留了父类的继承,我们准备好在 init() 函数中添加功能了。

5、使用 super() 函数

Python 还有一个 super() 函数,它会使子类从其父继承所有方法和属性:

实例

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

通过使用 super() 函数,您不必使用父元素的名称,它将自动从其父元素继承方法和属性。

6、添加属性

实例
把名为 graduationyear 的属性添加到 Student 类:

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019

在这例子中,2019 年应该是一个变量,并在创建 student 对象时传递到 Student 类。为此,请在 init() 函数中添加另一个参数:

实例
添加 year 参数,并在创建对象时传递正确的年份:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Elon", "Musk", 2019)

7、添加方法

实例
把名为 welcome 的方法添加到 Student 类:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

十九、Python 迭代器

1、Python 迭代器

迭代器是一种对象,该对象包含值的可计数数字。

迭代器是可迭代的对象,这意味着您可以遍历所有值。

从技术上讲,在 Python 中,迭代器是实现迭代器协议的对象,它包含方法 iter() 和 next()。

2、迭代器 VS 可迭代对象(Iterable)

列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器,您可以从中获取迭代器(Iterator)。

所有这些对象都有用于获取迭代器的 iter() 方法:

实例
从元组返回一个迭代器,并打印每个值:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))

甚至连字符串都是可迭代的对象,并且可以返回迭代器:

实例
字符串也是可迭代的对象,包含一系列字符:

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))

3、遍历迭代器

我们也可以使用 for 循环遍历可迭代对象:

实例
迭代元组的值:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)

提示:for 循环实际上创建了一个迭代器对象,并为每个循环执行 next() 方法。

4、创建迭代器

要把对象/类创建为迭代器,必须为对象实现 iter() 和 next() 方法。

正如您在 Python 类/对象 一章中学到的,所有类都有名为 init() 的函数,它允许您在创建对象时进行一些初始化。

iter() 方法的作用相似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。

next() 方法也允许您执行操作,并且必须返回序列中的下一个项目。

实例
创建一个返回数字的迭代器,从 1 开始,每个序列将增加 1(返回 1、2、3、4、5 等):

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

5、StopIteration

如果你有足够的 next() 语句,或者在 for 循环中使用,则上面的例子将永远进行下去。

为了防止迭代永远进行,我们可以使用 StopIteration 语句。

next() 方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误:

实例
在 20 个迭代之后停止:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)

二十、Python 作用域

变量仅在创建区域内可用。这称为作用域。

1、局部作用域

在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用。

实例
在函数内部创建的变量在该函数内部可用:

def myfunc():
  x = 100
  print(x)

myfunc()

2、函数内部的函数

如上例中所示,变量 x 在函数外部不可用,但对于函数内部的任何函数均可用:

实例
能够从函数内的一个函数访问局部变量:

def myfunc():
  x = 100
  def myinnerfunc():
    print(x)
  myinnerfunc()

myfunc()

3、全局作用域

在 Python 代码主体中创建的变量是全局变量,属于全局作用域。

全局变量在任何范围(全局和局部)中可用。

实例
在函数外部创建的变量是全局变量,任何人都可以使用:

x = 100

def myfunc():
  print(x)

myfunc()

print(x)

4、命名变量

如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(在函数外部),而一个在局部范围内可用(在函数内部):

实例
该函数将打印局部变量 x,然后代码还会打印全局变量 x:

x = 100

def myfunc():
  x = 200
  print(x)

myfunc()

print(x)

5、Global 关键字

如果您需要创建一个全局变量,但被卡在本地作用域内,则可以使用 global 关键字。

global 关键字使变量成为全局变量。

实例
如果使用 global 关键字,则该变量属于全局范围:

def myfunc():
  global x
  x = 100

myfunc()

print(x)

另外,如果要在函数内部更改全局变量,也请使用 global 关键字。

实例
要在函数内部更改全局变量的值,请使用 global 关键字引用该变量:

x = 100

def myfunc():
  global x
  x = 200

myfunc()

print(x)

二十一、Python 模块

1、什么是模块?

请思考与代码库类似的模块。

模块是包含一组函数的文件,希望在应用程序中引用。

2、创建模块

如需创建模块,只需将所需代码保存在文件扩展名为 .py 的文件中:

实例
在名为 mymodule.py 的文件中保存代码:

def greeting(name):
  print("Hello, " + name)

3、使用模块

现在,我们就可以用 import 语句来使用我们刚刚创建的模块:

实例
导入名为 mymodule 的模块,并调用 greeting 函数:

import mymodule

mymodule.greeting("Bill")

4、模块中的变量

模块可以包含已经描述的函数,但也可以包含各种类型的变量(数组、字典、对象等):

实例
在文件 mymodule.py 中保存代码:

person1 = {
  "name": "Bill",
  "age": 63,
  "country": "USA"
}

实例
导入名为 mymodule 的模块,并访问 person1 字典:

import mymodule

a = mymodule.person1["age"]
print(a)

5、重命名模块(取别名)

您可以在导入模块时使用 as 关键字创建别名:

实例
为 mymodule 创建别名 mx:

import mymodule as mx

a = mx.person1["age"]
print(a)

6、内建模块

Python 中有几个内建模块,您可以随时导入。

实例
导入并使用 platform 模块:

import platform

x = platform.system()
print(x)  #输出结果:windows

7、使用 dir() 函数

有一个内置函数可以列出模块中的所有函数名(或变量名)。dir() 函数:

实例
列出属于 platform 模块的所有已定义名称:

import platform

x = dir(platform)
print(x)

注释:dir() 函数可用于所有模块,也可用于您自己创建的模块。

8、从模块导入

您可以使用 from 关键字选择仅从模块导入部件。

实例
名为 mymodule 的模块拥有一个函数和一个字典:

def greeting(name):
  print("Hello, " + name)

person1 = {
  "name": "Bill",
  "age": 63,
  "country": "USA"
}

实例
仅从模块导入 person1 字典:

from mymodule import person1

print (person1["age"])

提示:在使用 from 关键字导入时,请勿在引用模块中的元素时使用模块名称。示例:person1[“age”],而不是 mymodule.person1[“age”]。


二十二、Python 日期

1、Python 日期

Python 中的日期不是其自身的数据类型,但是我们可以导入名为 datetime 的模块,把日期视作日期对象进行处理。

实例
导入 datetime 模块并显示当前日期:

import datetime

x = datetime.datetime.now()
print(x)

2、日期输出

如果我们执行上面的代码,结果将是:

2019-08-14 12:52:55.817273

日期包含年、月、日、小时、分钟、秒和微秒。

datetime 模块有许多方法可以返回有关日期对象的信息。

以下是一些例子,您将在本章稍后详细学习它们:

实例
返回 weekday 的名称和年份:

import datetime

x = datetime.datetime.now()

print(x.year)
print(x.strftime("%A"))输出结果:2021
                                Saturday

3、创建日期对象

如需创建日期,我们可以使用 datetime 模块的 datetime() 类(构造函数)。

datetime() 类需要三个参数来创建日期:年、月、日。

实例
创建日期对象:

import datetime

x = datetime.datetime(2020, 5, 17)

print(x)

datetime() 类还接受时间和时区(小时、分钟、秒、微秒、tzone)的参数,不过它们是可选的,默认值为 0,(时区默认为 None)。

4、strftime() 方法

datetime 对象拥有把日期对象格式化为可读字符串的方法。

该方法称为 strftime(),并使用一个 format 参数来指定返回字符串的格式:

实例
显示月份的名称:

import datetime

x = datetime.datetime(2019, 10, 1)

print(x.strftime("%B"))

二十三、Python JSON

JSON 是用于存储和交换数据的语法。
JSON 是用 JavaScript 对象表示法(JavaScript object notation)编写的文本。

1、Python 中的 JSON

Python 有一个名为 json 的内置包,可用于处理 JSON 数据。

实例
导入 json 模块:

import json

2、解析 JSON - 把 JSON 转换为 Python

若有 JSON 字符串,则可以使用 json.loads() 方法对其进行解析。

结果将是 Python 字典。

实例
把 JSON 转换为 Python:

import json

# 一些 JSON:
x =  '{ "name":"Bill", "age":63, "city":"Seatle"}'

# 解析 x:
y = json.loads(x)

# 结果是 Python 字典:
print(y["age"])

3、把 Python 转换为 JSON

若有 Python 对象,则可以使用 json.dumps() 方法将其转换为 JSON 字符串。

实例
把 Python 转换为 JSON:

import json

# Python 对象(字典):
x = {
  "name": "Bill",
  "age": 63,
  "city": "Seatle"
}

# 转换为 JSON:
y = json.dumps(x)

# 结果是 JSON 字符串:
print(y)

您可以把以下类型的 Python 对象转换为 JSON 字符串:

  • dict
  • list
  • tuple
  • string
  • int
  • float
  • True
  • False
  • None
    实例

将 Python 对象转换为 JSON 字符串,并打印值:

import json

print(json.dumps({"name": "Bill", "age": 63}))
print(json.dumps(["apple", "bananas"]))
print(json.dumps(("apple", "bananas")))
print(json.dumps("hello"))
print(json.dumps(42))
print(json.dumps(31.76))
print(json.dumps(True))
print(json.dumps(False))
print(json.dumps(None))

当 Python 转换为 JSON 时,Python 对象会被转换为 JSON(JavaScript)等效项:

pythonjson
dictObject
list Array
tuple Array
str String
int Number
floatNumber
True true
Falsefalse
Nonenull

4、格式化结果

上面的实例打印一个 JSON 字符串,但它不是很容易阅读,没有缩进和换行。

json.dumps() 方法提供了令结果更易读的参数:

实例
使用 indent 参数定义缩进数:

json.dumps(x, indent=4)

您还可以定义分隔符,默认值为(", ", ": "),这意味着使用逗号和空格分隔每个对象,使用冒号和空格将键与值分开:

实例
使用 separators 参数来更改默认分隔符:

json.dumps(x, indent=4, separators=(". ", " = "))

5、对结果排序

json.dumps() 方法提供了对结果中的键进行排序的参数:

实例
使用 sort_keys 参数来指定是否应对结果进行排序:

json.dumps(x, indent=4, sort_keys=True)

二十四、Python RegEx

RegEx 或正则表达式是形成搜索模式的字符序列。
RegEx 可用于检查字符串是否包含指定的搜索模式。

1、RegEx 模块

Python 提供名为 re 的内置包,可用于处理正则表达式。

导入 re 模块:

import re

2、Python 中的 RegEx

导入 re 模块后,就可以开始使用正则表达式了:

实例
检索字符串以查看它是否以 “China” 开头并以 “country” 结尾:

import re

txt = "China is a great country"
x = re.search("^China.*country$", txt)

3、RegEx 函数

re 模块提供了一组函数,允许我们检索字符串以进行匹配:

函数 描述
findall 返回包含所有匹配项的列表
search 如果字符串中的任意位置存在匹配,则返回 Match 对象
split 返回在每次匹配时拆分字符串的列表
sub 用字符串替换一个或多个匹配项

4、元字符

元字符是具有特殊含义的字符:

函数 描述
[ ] 一组字符: "[a-m]"
\ 示意特殊序列(也可用于转义特殊字符):"\d"
. 任何字符(换行符除外):"he..o"
^ 起始于 :"^hello"
$结束于:"world$"
* 零次或多次出现:"aix*"
+ 一次或多次出现:"aix+"
{ } 确切地指定的出现次数:"al{2}"
| 两者任一 :"falls|stays"
( ) 捕获和分组

5、特殊序列

特殊序列指的是 \ 后跟下表中的某个字符,拥有特殊含义:

函数 描述
\A 如果指定的字符位于字符串的开头,则返回匹配项
\b 返回指定字符位于单词的开头或末尾的匹配项
\B 返回指定字符存在的匹配项,但不在单词的开头(或结尾处)
\d 返回字符串包含数字的匹配项(数字 0-9)
\D 返回字符串不包含数字的匹配项
\s 返回字符串包含空白字符的匹配项
\S 返回字符串不包含空白字符的匹配项
\w 返回一个匹配项,其中字符串包含任何单词字符 (从 a 到 Z 的字符,从 0 到 9 的数字和下划线 _ 字符)
\W 返回一个匹配项,其中字符串不包含任何单词字符
\Z 如果指定的字符位于字符串的末尾,则返回匹配项

6、集合(Set)

集合(Set)是一对方括号 [] 内的一组字符,具有特殊含义:

函数 描述
[arn] 返回一个匹配项,其中存在指定字符(a,r 或 n)之一
[a-n] 返回字母顺序 a 和 n 之间的任意小写字符匹配项
[^arn] 返回除 a、r 和 n 之外的任意字符的匹配项
[0123] 返回存在任何指定数字(0、1、2 或 3)的匹配项
[0-9] 返回 0 与 9 之间任意数字的匹配
[0-5][0-9] 返回介于 0 到 9 之间的任何数字的匹配项
[a-zA-Z] 返回字母顺序 a 和 z 之间的任何字符的匹配,小写或大写
[+] 在集合中,+、*、.、|、()、$、{} 没有特殊含义,因此 [+] 表示:返回字符串中任何 + 字符的匹配项

二十五、Python PIP

1、什么是 PIP?

PIP 是 Python 包或模块的包管理器。

注释:如果您使用的是 Python 3.4 或更高版本,则默认情况下会包含 PIP。

2、什么是包(Package)?

包中包含模块所需的所有文件。

模块是您可以包含在项目中的 Python 代码库。

3、检查是否已安装 PIP

将命令行导航到 Python 脚本目录所在的位置,然后键入以下内容:

实例
检查 PIP 版本:

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip --version

4、安装 PIP

如果尚未安装 PIP,可以从此页面下载并安装:https://pypi.org/project/pip/

5、下载包

下载包非常容易。

打开命令行界面并告诉 PIP 下载您需要的软件包。

将命令行导航到 Python 脚本目录的位置,然后键入以下内容:

实例
下载名为 “camelcase” 的包:

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip install camelcase

现在,您已经下载并安装了第一个包!

6、使用包

安装包后,即可使用。

把 “camelcase” 包导入您的项目中。

实例
导入并使用 “camelcase”:

import camelcase

c = camelcase.CamelCase()

txt = "hello world"

print(c.hump(txt))

7、查找包

https://pypi.org/,您可以找到更多的包。

8、删除包

请使用 uninstall 命令来删除包:

实例
卸载名为 “camelcase” 的包:

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip uninstall camelcase

PIP 包管理器会要求您确认是否需要删除 camelcase 包:

Uninstalling camelcase-02.1:
  Would remove:
    c:\...\python\python36-32\lib\site-packages\camecase-0.2-py3.6.egg-info
    c:\...\python\python36-32\lib\site-packages\camecase\*
Proceed (y/n)?

按 y 键,包就会被删除。

9、列出包

请使用 list 命令列出系统上安装的所有软件包:

实例
列出已安装的包:

C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>pip list

结果:

Package         Version
-----------------------
camelcase       0.2
mysql-connector 2.1.6
pip             18.1
pymongo         3.6.1
setuptools      39.0.1

二十六、Python Try Except

try 块允许您测试代码块以查找错误。

except 块允许您处理错误。

finally 块允许您执行代码,无论 try 和 except 块的结果如何。

1、异常处理

当我们调用 Python 并发生错误或异常时,通常会停止并生成错误消息。

可以使用 try 语句处理这些异常:

实例
try 块将生成异常,因为 x 未定义:

try:
  print(x)
except:
  print("An exception occurred")

由于 try 块引发错误,因此会执行 except 块。

如果没有 try 块,程序将崩溃并引发错误:

2、多个异常

您可以根据需要定义任意数量的 exception 块,例如,假如您要为特殊类型的错误执行特殊代码块:

实例
如果 try 块引发 NameError,则打印一条消息,如果是其他错误则打印另一条消息:

try:
  print(x)
except NameError:
  print("Variable x is not defined")
except:
  print("Something else went wrong")

3、Else

如果没有引发错误,那么您可以使用 else 关键字来定义要执行的代码块:

实例
在本例中,try 块不会生成任何错误:

try:
  print("Hello")
except:
  print("Something went wrong")
else:
  print("Nothing went wrong")

4、Finally

如果指定了 finally 块,则无论 try 块是否引发错误,都会执行 finally 块。

实例

try:
  print(x)
except:
  print("Something went wrong")
finally:
  print("The 'try except' is finished")

这对于关闭对象并清理资源非常有用:

实例
试图打开并写入不可写的文件:

try:
  f = open("demofile.txt")
  f.write("Lorum Ipsum")
except:
  print("Something went wrong when writing to the file")
finally:
  f.close()

程序可以继续,而且不会打开文件对象。

5、引发异常

作为 Python 开发者,您可以选择在条件发生时抛出异常。

如需抛出(引发)异常,请使用 raise 关键词。

实例
假如 x 小于 0,则引发异常并终止程序:

x = -1

if x < 0:
  raise Exception("Sorry, no numbers below zero")

raise 关键字用于引发异常。

您能够定义所引发异常的类型、以及打印给用户的文本。

实例
如果 x 不是整数,则引发 TypeError:

x = "hello"

if not type(x) is int:
  raise TypeError("Only integers are allowed")

二十七、Python 命令行输入

1、命令行输入

Python 允许命令行输入。

这意味着我们能够要求用户输入。

Python 3.6 中的方法与 Python 2.7 略有不同。

Python 3.6 使用 input() 方法。

Python 2.7 使用 raw_input() 方法。

下面的例子会询问用户的姓名,当您输入名字时,名字将打印到屏幕上:
Python 3.6:

print("Enter your name:")
x = input()
print("Hello ", x)

Python 2.7:

print("Enter your name:")
x = raw_input()
print("Hello ", x)

二十八、Python 字符串格式化

为了确保字符串按预期显示,我们可以使用 format() 方法对结果进行格式化。

1、字符串 format()

format() 方法允许您格式化字符串的选定部分。

有时文本的一部分是你无法控制的,也许它们来自数据库或用户输入?

要控制此类值,请在文本中添加占位符(花括号 {}),然后通过 format() 方法运行值:

实例
添加要显示价格的占位符:

price = 52
txt = "The price is {} dollars"
print(txt.format(price))

您可以在花括号内添加参数以指定如何转换值:

实例
将价格格式化为带有两位小数的数字:

txt = "The price is {:.2f} dollars"

2、多个值

如需使用更多值,只需向 format() 方法添加更多值:

print(txt.format(price, itemno, count))

并添加更多占位符:

实例

quantity = 3
itemno = 567
price = 52
myorder = "I want {} pieces of item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))

3、索引号

您可以使用索引号(花括号 {0} 内的数字)来确保将值放在正确的占位符中:

实例

quantity = 3
itemno = 567
price = 52
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))

此外,如果要多次引用相同的值,请使用索引号;

4、命名索引

您还可以通过在花括号 {carname} 中输入名称来使用命名索引,但是在传递参数值 txt.format(carname = “Ford”) 时,必须使用名称:

实例

myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Porsche", model = "911"))

二十九、Python 文件处理

文件处理是任何 Web 应用程序的重要组成部分。
Python 有几个用于创建、读取、更新和删除文件的函数。

1、文件处理

在 Python 中使用文件的关键函数是 open() 函数。

open() 函数有两个参数:文件名和模式。

有四种打开文件的不同方法(模式):

  • “r” - 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。

  • “a” - 追加 - 打开供追加的文件,如果不存在则创建该文件。

  • “w” - 写入 - 打开文件进行写入,如果文件不存在则创建该文件。

  • “x” - 创建 - 创建指定的文件,如果文件存在则返回错误。
    此外,您可以指定文件是应该作为二进制还是文本模式进行处理。

  • “t” - 文本 - 默认值。文本模式。

  • “b” - 二进制 - 二进制模式(例如图像)。

2、语法

此外,您可以指定文件是应该作为二进制还是文本模式进行处理:

f = open("demofile.txt")

以上代码等同于:

f = open("demofile.txt", "rt")

因为 “r” (读取)和 “t” (文本)是默认值,所以不需要指定它们。

注释:请确保文件存在,否则您将收到错误消息。

三十、Python 文件打开

1、在服务器上打开文件

假设我们有以下文件,位于与 Python 相同的文件夹中:

demofile.txt
Hello! Welcome to demofile.txt
This file is for testing purposes.
Good Luck!

如需打开文件,请使用内建的 open() 函数。

open() 函数返回文件对象,此对象有一个 read() 方法用于读取文件的内容:

实例

f = open("demofile.txt", "r")
print(f.read())

2、只读取文件的一部分

默认情况下,read() 方法返回整个文本,但您也可以指定要返回的字符数:

实例
返回文件中的前五个字符:

f = open("demofile.txt", "r")
print(f.read(5))

3、读行

您可以使用 readline() 方法返回一行:

实例
读取文件中的一行:

f = open("demofile.txt", "r")
print(f.readline())

4、关闭文件

完成后始终关闭文件是一个好习惯。

实例
完成后关闭文件:

f = open("demofile.txt", "r")
print(f.readline())
f.close()

注释:在某些情况下,由于缓冲,您应该始终关闭文件,在关闭文件之前,对文件所做的更改可能不会显示。


三十一、Python 文件写入

1、写入已有文件

如需写入已有的文件,必须向 open() 函数添加参数:

  • “a” - 追加 - 会追加到文件的末尾
  • “w” - 写入 - 会覆盖任何已有的内容

实例

打开文件 “demofile2.txt” 并将内容追加到文件中:

f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()

# 追加后,打开并读取该文件:
f = open("demofile2.txt", "r")
print(f.read())

实例
打开文件 “demofile3.txt” 并覆盖内容:

f = open("demofile3.txt", "w")
f.write("Woops! I have deleted the content!")
f.close()

# 写入后,打开并读取该文件:
f = open("demofile3.txt", "r")
print(f.read())

注释:“w” 方法会覆盖全部内容。

2、创建新文件

如需在 Python 中创建新文件,请使用 open() 方法,并使用以下参数之一:

  • “x” - 创建 - 将创建一个文件,如果文件存在则返回错误
  • “a” - 追加 - 如果指定的文件不存在,将创建一个文件
  • “w” - 写入 - 如果指定的文件不存在,将创建一个文件

实例
创建名为 “myfile.txt” 的文件:

f = open("myfile.txt", "x")

结果:已创建新的空文件!

实例
如果不存在,则创建新文件:

f = open("myfile.txt", "w")

三十二、Python 删除文件

1、删除文件

如需删除文件,必须导入 OS 模块,并运行其 os.remove() 函数:

实例
删除文件 “demofile.txt”:

import os
os.remove("demofile.txt")

2、检查文件是否存在

为避免出现错误,您可能需要在尝试删除文件之前检查该文件是否存在:

实例
检查文件是否存在,然后删除它:

import os
if os.path.exists("demofile.txt"):
  os.remove("demofile.txt")
else:
  print("The file does not exist")

3、删除文件

如需删除整个文件夹,请使用 os.rmdir() 方法:

实例
删除文件夹 “myfolder”:

import os
os.rmdir("myfolder")

提示:您只能删除空文件夹。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值