python基本语法学习笔记(二)

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

  1. 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"])
  1. 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"))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249