Python If ... Else
1.缩进
Python 依赖缩进,使用空格来定义代码中的范围。
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")
2.简写 If
如果只有一条语句要执行,则可以将其与 if 语句放在同一行。
a = 200
b = 66
if a > b: print("a is greater than b")
3.简写 If ... Else
a = 200
b = 66
print("A") if a > b else print("=") if a == b else print("B")
4.pass 语句
if 语句不能为空,但是如果您处于某种原因写了无内容的 if 语句,请使用 pass 语句来避免错误。
Python While 循环
Python 有两个原始的循环命令:
while 循环:如果使用 while 循环,只要条件为真,我们就可以执行一组语句。
for 循环:for 循环用于迭代序列(即列表,元组,字典,集合或字符串)。
1.break 语句
如果使用 break 语句,即使 while 条件为真,我们也可以停止循环:
2.continue 语句
如果使用 continue 语句,我们可以停止当前的迭代,并继续下一个:
3.else 语句
通过使用 else 语句,当条件不再成立时,我们可以运行一次代码块:
Python 函数
1.创建函数
在 Python 中,使用 def 关键字定义函数:
2.默认参数值
下面的例子展示如何使用默认参数值。
如果我们调用了不带参数的函数,则使用默认值:
def my_function(country = "China"):
print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
3.任意参数
如果您不知道将传递给您的函数多少个参数,请在函数定义的参数名称前添加 *。
这样,函数将接收一个参数元组,并可以相应地访问各项:
def my_function(*kids):
print("The youngest child is " + kids[2])
my_function("Phoebe", "Jennifer", "Rory")
4.pass 语句
函数定义不能为空,但是如果您出于某种原因写了无内容的函数定义,请使用 pass 语句来避免错误。
def myfunction:
pass
Python Lambda
lambda 函数是一种小的匿名函数。
lambda 函数可接受任意数量的参数,但只能有一个表达式。
*实例
一个 lambda 函数,它把作为参数传入的数字加 10,然后打印结果15:
x = lambda a : a + 10
print(x(5))
Python 数组
请注意,Python 没有内置对数组的支持,但可以使用 Python 列表代替。
1.添加数组元素
您可以使用 append() 方法把元素添加到数组中。
cars.append("Audi")
2.删除数组元素
您可以使用 pop() 方法从数组中删除元素。(删除指定位置的元素)
删除 cars 数组的第二个元素:
cars.pop(1)
您也可以使用 remove() 方法从数组中删除元素。(删除具有指定值的项目)
删除值为 "Volvo" 的元素:
cars.remove("Volvo")
Python 类和对象
Python 是一种面向对象的编程语言。
Python 中的几乎所有东西都是对象,拥有属性和方法。
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)
4.对象方法
对象也可以包含方法。对象中的方法是属于该对象的函数。
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()
5.self 参数
self 参数是对类的当前实例的引用,用于访问属于该类的变量。
它不必被命名为 self,您可以随意调用它,但它必须是类中任意函数的首个参数
6.修改对象属性
p1.age = 40
7.删除对象属性
del p1.age
8.删除对象
del p1
Python 继承
继承允许我们定义继承另一个类的所有方法和属性的类。
父类是继承的类,也称为基类。
子类是从另一个类继承的类,也称为派生类。
1.创建父类
任何类都可以是父类,因此语法与创建任何其他类相同:
2.创建子类
要创建从其他类继承功能的类,请在创建子类时将父类作为参数发送:
class Student(Person):
pass
3.添加 init() 函数
class Student(Person):
def __init__(self, fname, lname):
当添加 init() 函数时,子类将不再继承父的 init() 函数。
如需保持父的 init() 函数的继承,请添加对父的 init() 函数的调用
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
4.使用 super() 函数
Python 还有一个 super() 函数,它会使子类从其父继承所有方法和属性:
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
Python 迭代器
迭代器是一种对象,该对象包含值的可计数数字。
迭代器是可迭代的对象,这意味着您可以遍历所有值。
从技术上讲,在 Python 中,迭代器是实现迭代器协议的对象,它包含方法 iter() 和 next()。
1.迭代器 VS 可迭代对象(Iterable)
列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器,您可以从中获取迭代器(Iterator)。
所有这些对象都有用于获取迭代器的 iter() 方法:
实例
从元组返回一个迭代器,并打印每个值:
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
2.遍历迭代器
我们也可以使用 for 循环遍历可迭代对象:
mytuple = ("apple", "banana", "cherry")
for x in mytuple:
print(x)
for 循环实际上创建了一个迭代器对象,并为每个循环执行 next() 方法。
Python 作用域
变量仅在创建区域内可用。这称为作用域。
1.局部作用域
在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用
2.全局作用域
在 Python 代码主体中创建的变量是全局变量,属于全局作用域。
全局变量在任何范围(全局和局部)中可用。
3.命名变量
如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(在函数外部),而一个在局部范围内可用(在函数内部):
4.Global 关键字
如果您需要创建一个全局变量,但被卡在本地作用域内,则可以使用 global 关键字。
global 关键字使变量成为全局变量。
*另外,如果要在函数内部更改全局变量,也请使用 global 关键字。
Python 模块
模块是包含一组函数的文件,希望在应用程序中引用。
1.创建模块
如需创建模块,只需将所需代码保存在文件扩展名为 .py 的文件中:
2.使用模块
现在,我们就可以用 import 语句来使用我们刚刚创建的模块:
3.模块中的变量
模块可以包含已经描述的函数,但也可以包含各种类型的变量(数组、字典、对象等):
4.为模块命名
您可以随意对模块文件命名,但是文件扩展名必须是 .py。
5.重命名模块
您可以在导入模块时使用 as 关键字创建别名:
6.使用 dir() 函数
有一个内置函数可以列出模块中的所有函数名(或变量名)。dir() 函数:
import platform
x = dir(platform)
print(x)
7.从模块导入
您可以使用 from 关键字选择仅从模块导入部件。
from mymodule import person1
print (person1["age"])
Python 日期
Python 中的日期不是其自身的数据类型,但是我们可以导入名为 datetime 的模块,把日期视作日期对象进行处理。
import datetime
x = datetime.datetime.now()
print(x)
1.创建日期对象
如需创建日期,我们可以使用 datetime 模块的 datetime() 类(构造函数)。
datetime() 类需要三个参数来创建日期:年、月、日。
import datetime
x = datetime.datetime(2020, 5, 17)
print(x)
*datetime() 类还接受时间和时区(小时、分钟、秒、微秒、tzone)的参数,不过它们是可选的,默认值为 0,(时区默认为 None)。
2.strftime() 方法
datetime 对象拥有把日期对象格式化为可读字符串的方法。
该方法称为 strftime(),并使用一个 format 参数来指定返回字符串的格式:
import datetime
x = datetime.datetime(2019, 10, 1)
print(x.strftime("%B"))
*日期格式:https://www.w3school.com.cn/python/python_datetime.asp
Python JSON
JSON 是用于存储和交换数据的语法。
Python 有一个名为 json 的内置包,可用于处理 JSON 数据。
import json
- json.loads() 把 JSON 转换为 Python
若有 JSON 字符串,则可以使用 json.loads() 方法对其进行解析。
结果将是 Python 字典。
import json
# 一些 JSON:
x = '{ "name":"Bill", "age":63, "city":"Seatle"}'
# 解析 x:
y = json.loads(x)
# 结果是 Python 字典:
print(y["age"])
- json.dumps() 把 Python 转换为 JSON
若有 Python 对象,则可以使用 json.dumps() 方法将其转换为 JSON 字符串。
import json
x = {
"name": "Bill",
"age": 63,
"married": True,
"divorced": False,
"children": ("Jennifer","Rory","Phoebe"),
"pets": None,
"cars": [
{"model": "Porsche", "mpg": 38.2},
{"model": "BMW M5", "mpg": 26.9}
]
}
print(json.dumps(x))
3.格式化结果
上面的实例打印一个 JSON 字符串,但它不是很容易阅读,没有缩进和换行。
json.dumps() 方法提供了令结果更易读的参数:
1)使用 indent 参数定义缩进数:
json.dumps(x, indent=4)
2)使用 separators 参数来更改默认分隔符:
*默认值为(", ", ": "),这意味着使用逗号和空格分隔每个对象,使用冒号和空格将键与值分开:
json.dumps(x, indent=4, separators=(". ", " = "))
4.对结果排序
json.dumps() 方法提供了对结果中的键进行排序的参数:
使用 sort_keys 参数来指定是否应对结果进行排序:
json.dumps(x, indent=4, sort_keys=True)
Python RegEx
RegEx 或正则表达式是形成搜索模式的字符序列。
RegEx 可用于检查字符串是否包含指定的搜索模式。
1.RegEx 模块
Python 提供名为 re 的内置包,可用于处理正则表达式。
检索字符串以查看它是否以 "China" 开头并以 "country" 结尾:
import re
txt = "China is a great country"
x = re.search("^China.*country$", txt)
if (x):
print("YES! We have a match!")
else:
print("No match")
2.RegEx 函数
re 模块提供了一组函数,允许我们检索字符串以进行匹配:
findall: 返回包含所有匹配项的列表
search: 如果字符串中的任意位置存在匹配,则返回 Match 对象
split: 返回在每次匹配时拆分字符串的列表
sub: 用字符串替换一个或多个匹配项
3.元字符
元字符是具有特殊含义的字符:
字符 | 描述 | 示例 | TIY |
---|---|---|---|
[] | 一组字符 | "[a-m]" | 试一试 |
\ | 示意特殊序列(也可用于转义特殊字符) | "\d" | 试一试 |
. | 任何字符(换行符除外) | "he..o" | 试一试 |
^ | 起始于 | "^hello" | 试一试 |
$ | 结束于 | "world$" | 试一试 |
* | 零次或多次出现 | "aix*" | 试一试 |
+ | 一次或多次出现 | "aix+" | 试一试 |
{} | 确切地指定的出现次数 | "al{2}" | 试一试 |
| | 两者任一 | "falls|stays" | 试一试 |
() | 捕获和分组 |
4.## 特殊序列
特殊序列指的是 \ 后跟下表中的某个字符,拥有特殊含义:
https://www.w3school.com.cn/python/python_regex.asp
5.集合(Set)
集合(Set)是一对方括号 [] 内的一组字符,具有特殊含义:
6.indall() 函数
findall() 函数返回包含所有匹配项的列表。
7.search() 函数
search() 函数搜索字符串中的匹配项,如果存在匹配则返回 Match 对象。
如果有多个匹配,则仅返回首个匹配项:
8.split() 函数
split() 函数返回一个列表,其中字符串在每次匹配时被拆分:
9.sub() 函数
sub() 函数把匹配替换为您选择的文本:
Python PIP
PIP 是 Python 包或模块的包管理器。
注释:如果您使用的是 Python 3.4 或更高版本,则默认情况下会包含 PIP。
1.列出包
请使用 list 命令列出系统上安装的所有软件包:
在终端输入:pip list 即可查看
Python Try Except
try 块允许您测试代码块以查找错误。
except 块允许您处理错误。
finally 块允许您执行代码,无论 try 和 except 块的结果如何。
1.异常处理
当我们调用 Python 并发生错误或异常时,通常会停止并生成错误消息。
可以使用 try 语句处理这些异常:
try 块将生成异常,因为 x 未定义:
try:
print(x)
except:
print("An exception occurred")
2.多个异常
您可以根据需要定义任意数量的 exception 块,例如,假如您要为特殊类型的错误执行特殊代码块:
例:如果 try 块引发 NameError,则打印一条消息,如果是其他错误则打印另一条消息:
try:
print(x)
except NameError:
print("Variable x is not defined")
except:
print("Something else went wrong")
3.Finally
如果指定了 finally 块,则无论 try 块是否引发错误,都会执行 finally 块。
try:
print(x)
except:
print("Something went wrong")
finally:
print("The 'try except' is finished")
Python 命令行输入
Python 允许命令行输入。
这意味着我们能够要求用户输入。
Python 3.6 中的方法与 Python 2.7 略有不同。
Python 3.6 使用 input() 方法。
Python 2.7 使用 raw_input() 方法。
Python 字符串格式化
format() 方法允许您格式化字符串的选定部分。
有时文本的一部分是你无法控制的,也许它们来自数据库或用户输入?
要控制此类值,请在文本中添加占位符(花括号 {}),然后通过 format() 方法运行值:
price = 52
txt = "The price is {} dollars"
print(txt.format(price))
1.索引号
您可以使用索引号(花括号 {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))
2.命名索引
您还可以通过在花括号 {carname} 中输入名称来使用命名索引,但是在传递参数值 txt.format(carname = "Ford") 时,必须使用名称:
myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Porsche", model = "911"))