随手笔记之Python

时间:2022-10-27 21:04:46

Sudo apt-get install python

运行 python python3

Python + xx.py

Ctrl + d 退出

 

message = "Hello Python world!"

print(message)

message = "Hello Python Crash Course world!"

print(message)

Hello Python world!

Hello Python Crash Course world!

程序中可随时修改变量的值,而Python将始终记录变量的最新值

 

变变量量的的命命名名和和使使用用

Python中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在让你编写的代码更容易阅读和理解。请务必牢记下述有关变量的规则。

1.变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message

2.变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greetingmessage会引发错误。

3.不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print

4.变量名应既简短又具有描述性。例如,namen好,student_names_n好,name_lengthlength_of_persons_name好。

5.慎用小写字母l和大写字母O,因为它们可能被人错看成数字10

 

字符串 就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号

"This is a string."

'This is also a string'

 

title() 以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写

name = "ada lovelace"

print(name.title())

--> Ada Lovelace

要将字符串改为全部大写或全部小写

print(name.upper())

print(name.lower())

 

 合合并并((拼拼接接))字字符符串 Python使用加号(+)来合并字符串

first_name = "ada"

last_name = "lovelace" full_name = first_name + " " + last_name

print(full_name)

ada lovela

字符串中添加制表符,可使用字符组合\t

字符串中添加换行符,可使用字符组合\n

字符串中同时包含制表符和换行符。字符串"\n\t

删除所有空白rstrip()

剔除字符串开头的空白lstrip()

剔除字符串两端的空白strip()

Python中,可对整数执行加(+)减(-)乘(*)除(/)运算

>>> 2 + 3

5

>>> 3 - 2

1

>>> 2 * 3

6

>>> 3 / 2

1.5

Python 2中,将两个整数相除得到的结果稍有不同:

>>> python2.7

>>> 3 / 2

1

若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数:

1.5

>>> 3 / 2.0

1.5

>>> 3.0 / 2.0

1.5

 

 

使用两个乘号表示乘方运算

>>> 3 ** 2

9

>>> 3 ** 3

27

以使用括号来修改运算次序

>>> 2 + 3*4

14

>>> (2 + 3) * 4

20

 

空格不影响Python计算表达式的方式,它们的存在旨在让你阅读代码时,能迅速确定先执行哪些运算

 

从很大程度上说,使用浮点数时都无需考虑其行为

>>> 0.1 + 0.1

0.2

 

将非字符串值表示为字符串str(非字符串)

注释用井号(# )标识。井号后面的内容都会被Python解释器忽略,

还有一种注释方法 """显示简单的问候语"""三双引号段落注释

Python终端会话中执行命令import this

 

用方括号([] )来表示列表,并用逗号来分隔其中的元素。

bicycles = ['trek', 'cannondale', 'redline', 'specialized]

索引从0而不是1开始

访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1索引-2返回倒数第

二个列表元素,索引-3 返回倒数第三个列表元素

 

在列表末尾添加元素 motorcycles.append('ducati')

在列表中插入元素 方法insert()可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值 motorcycles.insert(0 'ducati)这种操作将列表中既有的每个元素都右

移一个位置:

从列表中删除元素:del motorcycles[0]

 使用方法pop() 删除元素可删除列表末尾的元素,并让你能够接着使用它

 poppedmotorcycle = motorcycles.pop()

实际上,你可以使用pop() 来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可first_owned = motorcycles.pop(0)

 

根据值删除元素motorcycles.remove('ducati')

 

方法sort() 让你能够较为轻松地对列表进行排序,永久性地修改了列表元素的排列顺序

字母顺序相反的顺序排列列表元素只需向sort() 方法传递参数reverse=True

Sort(reverse=True)

 

使用函数sorted() 对列表进行临时排序 print(sorted(cars))

倒着打印列表使用方法reverse(),reverse()不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序.方法reverse()永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse()即可。

 

使用函数len() 可快速获悉列表的长度

 

遍遍历历整整个个列列表

for magician in magicians:

print(magician)

 

注意缩进

 

 

 

 

 

range() 让你能够轻松地生成一系列的数字 range(1,5)

函数range() Python从你指定的第一个值开始数,并在到达你指定的第二个值

后停止实际上它不会打印数字5

 

要创建数字列表,可使用函数list() range() 的结果直接转换为列表。如果将range()作为list()的参数,输出将为一个数字列表

numbers = list(range(1,6))

 

使用函数range() 时,还可指定步长。

even_numbers = list(range(2,11,2))  [2, 4, 6, 8, 10]

 

个专门用于处理数字列表的Python函数min() , max() , sum()

列表解析:

列表解析 for 循环和创建新元素的代码合并成一行,并自动附加新元素

squares = [value**2 for value in range(1,11)

 

 

以处理列表的部分元素——Python称之为切片

 

players = ['charles', 'martina', 'michael', 'florence', 'eli']

 print(players[0:3])   // 输出分别为01 2 的元素

如果你没有指定第一个索引,Python将自动从列表开头

print(players[:4])

要让切片终止于列表末尾,也可使用类似的语法

print(players[2:])

输出名单上的最后三名队员,可使用切片players[-3:]

 

复制列表:

要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。

 

 friendfoods = myfoods

这里将my_foods 赋给friend_foods ,而不是将my_foods的副本存储到friend_foods这种语法实际上是让Python将新变量friend_foods关联到包含在my_foods中的列表,因此这两个变量都指向同一个列表。当我们将'cannoli'添加到my_foods中时,它也将出现在friend_foods中;同样,虽然'icecream'好像只被加入到了friend_foods中,但它也将出现在这两个列表中

 

 

 

 

 

 

 

 

Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组

圆括号而不是方括号

dimensions = (200, 50)

print(dimensions[0])

print(dimensions[1])

 

虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:

dimensions = (200, 50)

dimensions = (400, 100)

 

检查是否相等

>>> car = 'bmw'

>>> car == 'bmw'

True

 

if car == 'bmw'

检查是否不相等

=

 

<=  >=  <  >

 

检测多个条件 and  相当于C语言 &&

 Or   相应于 C语言||

 

判断特定的值是否已包含在列表中

requested_toppings = ['mushrooms', 'onions', 'pineapple']

If 'mushrooms' in requested_toppings:

 

判断特定的值是否不包含在列表中可使用关键字not in

 if user not in banneduse

 

布尔表达式

game_active = True

can_edit = False

 

 

 

 

 

 

 

 

 

if age >= 18:

else:

 

If age < 4:

elif age < 18:

else:

 

 

字典用放在花括号{} 中的一系列键—值对表示:

alien0 = {'color': 'green', 'points': 5}

print(alien_0['color'])

 

字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值

 

创建一个空字典

alien0 = {}

alien_0['color'] = 'green'

alien0['points'] = 5

 

 删除键—值对del alien_0['points']

 

 

遍历所有的键—值对

 

user_0 = {

'username': 'efermi',

'first': 'enrico',

'last': 'fermi',

}

for key, value in user_0.items():

print("\nKey: " + key)

print("Value: " + value)

 

遍历字典中的所有键方法keys()

按顺序遍历字典中的所有键可使用函数sorted() 来获得按特定顺序排列的键列表的副本

遍历字典中的所有值values()

去除重复数据:set(xxx)

 

字典列表

alien_0 = {'color': 'green', 'points': 5}

alien_1 = {'color': 'yellow', 'points': 10}

alien_2 = {'color': 'red', 'points': 15}

aliens = [alien_0, alien_1, alien_2]

 

字典中存储列表

pizza = {

'crust': 'thick',

'toppings': ['mushrooms', 'extra cheese'],

}

 

字典中存储字典

users = {

'aeinstein': {

'first': 'albert',

'last': 'einstein',

'location': 'princeton',

},

'mcurie': {

'first': 'marie',

'last': 'curie',

'location': 'paris',

},

}

 

 

函数input() 让程序暂停运行,等待用户输入一些文本

Python 2.7,应使用函数raw_input()来提示用户输入

int() 将这个字符串转换成了数值表示

 

求模运算符

>>> 4 % 3

1

 

while 循环

current_number = 1

while current_number <= 5:

print(current_number)

current_number += 1

 

break 退出循环

在任何Python循环中都可使用break语句。例如,可使用break语句来退出遍历列表或字典的for循环

 

要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句

 

 

定义函数:

def greet_user():

        """显示简单的问候语"""

        #显示简单的问候语                                                                                                            

        print("Hello!")

greet_user()

            

向函数传递信息:

def greet_user(username):

"""显示简单的问候语"""

print("Hello, " + username.title() + "!")

greet_user('jesse')

 

关键字实参:

def describe_pet(animal_type, pet_name):

"""显示宠物的信息"""

print("\nI have a " + animal_type + ".")

print("My " + animal_type + "'s name is " + pet_name.title() + ".")

describe_pet(animal_type='hamster', pet_name='harry')

这样顺序就可以颠倒了

 

默认值:

 

def describe_pet(pet_name, animal_type='dog'):

也可以调用修改

Describe_pet(pet_name='harry', animaltype='hamste)

 

返回简单值

可使用return 语句将值返回到调用函数的代码行

return full_name.title()

 

返回字典

person = {'first': first_name, 'last': last_name}

return person

 

传递列表

usernames = ['hannah', 'ty', 'margot']

greet_users(usernames)

 

 

 

// 特殊点:

age=''

if age:

while True:

 

在在函函数数中中修修改改列列表表:

相当于指针:

completed_models = []

print_models(unprinted_designs, completed_models)

show_completed_models(completed_models)

 

禁止函数修改列表

functionname(listname[:])   副本

 

传递任意数量的实参:

def make_pizza(*toppings):

"""打印顾客点的所有配料"""

print(toppings)

make_pizza('pepperoni')

make_pizza('mushrooms', 'green peppers', 'extra cheese')

形参名*toppings 中的星号让Python创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中

 

如果前面的函数还需要一个表示比萨尺寸的实参,必须将该形参放在形参*toppings的前面:

def make_pizza(size, *toppings):

"""概述要制作的比萨"""

print("\nMaking a " + str(size) +

"-inch pizza with the following toppings:")

for topping in toppings:

print("- " + topping)

make_pizza(16, 'pepperoni')

make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

Python将收到的第一个值存储在形参size中,并将其他的所有值都存储在元组toppings

 

将函数存储在模块中:

模块 是扩展名为.py的文件,包含要导入到程序中的代码

pizza.py

def make_pizza(size, *toppings):

 

making_pizzas.py

import pizza

pizza.make_pizza(16, 'pepperoni')

 

只需编写一条import 语句并在其中指定模块名,就可在程序中使用该模块中的所有函数

如果你使用这种import 语句导入了名为module_name.py 的整个模块,就可使用下面的语法来使用其中任何一个函数:module_name.function_name()

 

导入特定的函数:

from module_name import function_name

from module_name import function_0, function_1, function_2

 

若使用这种语法,调用函数时就无需使用句点。由于我们在import语句中显式地导入了函数make_pizza(),因此调用它时只需指定其名称

 

from pizza import make_pizza

make_pizza(16, 'pepperoni')

make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

 

使用as 给函数指定别名:

from pizza import make_pizza as mp

mp(16, 'pepperoni')

mp(12, 'mushrooms', 'green peppers', 'extra cheese')

这可避免与这个程序可能包含的函数make_pizza()混淆。

 

给模块指定别名:

import pizza as p

p.make_pizza(16, 'pepperoni')

p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

 

导入模块中的所有函数:

from pizza import *

make_pizza(16, 'pepperoni')

makepizza(12, 'mushrooms', 'green peppers', 'extra cheese)

 

应给函数指定描述性名称,且只在其中使用小写字母和下划线

 

 

创建和使用类:

 

class Dog():

"""一次模拟小狗的简单尝试"""

def __init__(self, name, age):

"""初始化属性nameage"""

self.name = name

self.age = age

def sit(self):

"""模拟小狗被命令时蹲下"""

print(self.name.title() + " is now sitting.")

def roll_over(self):

"""模拟小狗被命令时打滚"""

print(self.name.title() + " rolled over!")

 

1. 方法__init__()开头和末尾各有两个下划线,这是一种约定每当你根

Dog 类创建新实例时,Python都会自动运行它

 

我们将方法__init__() 定义成了包含三个形参:self nameage。在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。为何必须在方法定义中包

含形参self 呢?因为Python调用这个__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身

的引用,让实例能够访问类中的属性和方法。我们创建Dog实例时,Python将调用Dog类的方法__init__()。我们将通过实参向Dog()传递名字和年龄;self会自动传递,

因此我们不需要传递它。每当我们根据Dog 类创建实例时,都只需给最后两个形参(nameage )提供值。

 

my_dog = Dog('willie', 6)

print("My dog's name is " + my_dog.name.title() + ".") print("My dog is " + str(my_dog.age) + " years old.")

 

1. 访问属性

(1) my_dog.name

(2) my_dog.age

(3) my_dog.sit()

(4) my_dog.roll_over()

 

给属性指定默认值:

class Car():

def __init__(self, make, model, year):

"""初始化描述汽车的属性"""

self.make = make

self.model = model

self.year = year

self.odometer_reading = 0

 

 

方法修改属性的值

 

导入单个类:

from car import Car

my_new_car = Car('audi', 'a4', 2016)

从一个模块中导入多个类

from car import Car, ElectricCar

导入整个模块

import car

my_beetle = car.Car('volkswagen', 'beetle', 2016)

 

导入模块中的所有类

from module_name import *

 

不推荐使用这种导入方式,其原因有二。首先,如果只要看一下文件开头的import语句,就能清楚地知道程序使用了哪些类,将大有裨益;但这种导入方式没有明确地指出你

使用了模块中的哪些类。这种导入方式还可能引发名称方面的困惑。如果你不小心导入了一个与程序文件中其他东西同名的类,将引发难以诊断的错误。这里之所以介绍这种导

入方式,是因为虽然不推荐使用这种方式,但你可能会在别人编写的代码中见到它

类名应采用驼峰命名法 ,即将类名中的每个单词的首字母都大写,而不使用下划线

实例名和模块名都采用小写格式,并在单词之间加上下划线

 

 

读取整个文件:

 

with open('pi_digits.txt') as file_object:

contents = file_object.read()

print(contents)

 

关键字with 在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open() ,但没有调用close()但通过使用前面所示的结构,可让Python去确定:你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。

 

文件路径:

file_path = '/home/ehmatthes/other_files/text_files/filename.txt'

with open(file_path) as file_object

 

逐行读取:

filename = 'pi_digits.txt'

with open(filename) as file_object:

for line in file_object:

print(line)

 

创建一个包含文件各行内容的列表

filename = 'pi_digits.txt'

with open(filename) as file_object:

lines = file_object.readlines()

for line in lines:

      print(line.rstrip())

 

使用方法replace() 将字符串中的特定单词都替换为另一个单词

>>> message = "I really like dogs."

>>> message.replace('dog', 'cat')

'I really like cats.’

 

写入文件:

filename = 'programming.txt'

with open(filename, 'w') as file_object:

file_object.write("I love programming.")

 

Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式

 

写入多行

函数write() 不会在你写入的文本末尾添加换行符,因此如果你写入多行时没有指定换行符,

filename = 'programming.txt'

with open(filename, 'w') as file_object:

file_object.write("I love programming.\n")

file_object.write("I love creating new games.\n")

 

附加到文件

filename = 'programming.txt'

with open(filename, 'a') as file_object:

file_object.write("I also love finding meaning in large datasets.\n")

file_object.write("I love creating apps that can run in a browser.\n")

 

 

 

异常处理:

try-except代码块

try:

print(5/0)

except ZeroDivisionError:

print("You can't divide by zero!")

 

try-except-else 代码块

 

try:

answer = int(first_number) / int(second_number)

except ZeroDivisionError:

print("You can't divide by 0!")

else:

print(answer)

 

存储数据:

JSONJavaScript Object Notation)格式最初是为JavaScript开发的,但随后成了一种常见格式,被包括Python在内的众多语言采用

模块json让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据

import json

numbers = [2, 3, 5, 7, 11, 13]

filename = 'numbers.json'

with open(filename, 'w') as f_obj:

json.dump(numbers, f_obj)

 

看看其内容。数据的存储格式与Python中一样:

[2, 3, 5, 7, 11, 13]

 

import json

filename = 'numbers.json'

with open(filename) as f_obj:

numbers = json.load(f_obj)

print(numbers)

 

Pygame,这是一组功能强大而有趣的模块,可用于管理图形、动画乃至声音,让你能够更轻松地开发复杂的游戏。通过使用Pygame来处理在屏幕上绘制图像等任务,

 

Matplotlib:

Pygal

 

CSV文件格式

以以逗号分隔的值 CSV

 

requests包让Python程序能够轻松地向网站请求信,息以及检查返回的响应。要安装requests,请执行类似于下面的命令:

pip install --user requests

 

处理API响应:

import requests

# 执行API调用并存储响应

url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'

r = requests.get(url)

print("Status code:", r.status_code)

# API响应存储在一个变量中

response_dict = r.json()

# 处理结果

print(response_dict.keys())

 

Django入门

Django是一个Web框架 ——一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能让你更轻松地读写数据库、管理用户等

python -m venv ll_env

pip install --user virtualenv

 

设置项目“学习笔记”的样式

pip install django-bootstrap3

 

 

 

疑问点:

1.

 

def build_profile(name,**userinfo):                                                                                                  

        profile={}

        profile["name"]=name

        for key,value in userinfo.items():

                profile[key]=value

        return profile

 

profile=build_profile("yexiang",age=27,sex="man")

print(profile)

 

上面的结果是

{'age': 27, 'sex': 'man', 'name': 'yexiang'}

 

如果把profile["name"]=name 改为 profile[‘name’]=name

结果是{'name': 'yexiang', 'sex': 'man', 'age': 27}

不知道这是为什么。双引号和单引号不是一样的么

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

增强知识

字节码编译:

当程序执行时,python内部会将源代码编译成所谓的字节码的形式。.pyc格式,之后字节码发送给python虚拟机PVM 上执行,PVM就是迭代运行字节码指令的一个大循环,一个接一个的完成操作。PVMpython运行的引擎。

Python字节码不是机器的二进制代码,字节码是特定于python的一种表现形式

 

 

CPython:一般安装的就是这个

JPython: 包含了JAVA类,这些类编译Pthon代码形成JAVA字节码并将得到的字节码映射到JVM中去运行

IronPython : 可以与Windows平台上的.NET框架集成应用

 

可以定下输出到文件中

python3 test.py > test.txt

 

如果想像shell脚本那么运行,那么在脚本第一行添加

#!/usr/bin/python

这既可以shell 下运行。也可以和之前一样python3 xxx.py 运行

因为env程序可以通过系统搜索路径的位置

 

 

使用exec运行模块文件

例如: exec(open(“xxx.py”).read())相当于把代码复制到这里

 

Pdb命令行调试器

 

嵌套:

例如列表中嵌套列表:

M[[1,2,3], [4,5,6],[7,8,9]]

这可以使用 M[1]  = [4,5,6]

列表解析源自集合概念:

Col2 = [row[1] for row in M]

 = [2,5,8]

上面的意思就是把矩阵M的每个row中的row[1],放到一个新的列表中去,结果就是一个包含了矩阵的第二列的新列表

 

 

当一个列表或者字典不需要的时候释放空间 可以这样 M = 0 ,从技术上说,Python有一种叫做垃圾收集的特性。Python中一旦一个对象的最后一次引用被移除,空间将会被立即收回

 

字符串格式化:

如: “{0:o},{1:x},{2.b}”.format(64,64,64) =  “100,40,1000000”

“%o,%x,%X” % (64,255,255) =  “100,ff,FF”

 

print ("All partition files in %s partition are the same!\n" % (cuspartition))

=

All partition files in 5 partition are the same!

 

集合:set

 

X = set(“abcde”)

Y = set(“bdxyz”)

X = set([“a”,”b”,”c”.”d”,”e”])

集合通过表达式操作符支持一般的数学集合运算:

 

“e“ in X

True

X-Y  // different

Set([“a”,”c”,”e”])

X|Y  // union

Set([“a”,”c”,”b”,”e”,”d”,”y”,”x”,”z”])

X&Y  // same

Set([”b”,”d”])

X^Y  // 去除相同

Set([“a”,”c”,”e”,”y”,”x”,”z”])

X>Y, X<Y

(False,False)

 

Add, remove,

 

For item in set(“abc”):

Print(item*3)

= aaa

 Ccc

 Bbb

 

为什么不是 aaa bbb ccc

那是因为集合是无序的并不包含位置顺序,所以上面的结果每次执行都不固定的

  

Python 中的bool类型值是 TrueFalse而不是 10,但是可以看成1 0

True+4 = 5

 

Python中类型是在运行过程中自动决定的,这意味着没必要事先声明变量

 

变量,对象,引用:

 

运行a=3后,变量a变成对象3的一个引用,在内部,变量事实上是到对象内存空间的一个指针,python中变量到对象的连接称为引用,也就是说,引用是一种关系。以内存中的指针的形式实现,一旦变量被使用(也就是说被使用),python自动跟随这个变量到对象的连接

1. 变量是一个系统表的元素,拥有指向对象的连接的空间

2. 对象是分配一块内存,有足够的空间去表示它们所代表的值

3. 引用是自动形成的从变量到对象的指针

 

 

 

举例:

A = 3

A = ‘hello’

A = 1.234

变量名A没有类型,这里只是把A指向了不同的对象的引用,对象都知道自己的类型,每个对象都包含了一个头部信息,标记了对象的类型 ,还有引用计数器

 

对象垃圾回收:

A = 3 之后 A = ‘hello’ 每当一个变量名被赋予了一个新的对象,之前的那个对象占用的空间会被回收,这种自动回收对象空间的技术叫做垃圾收集,因为对象的引用计数器为0

 

共享引用:

 

A = 3

B = A

 

 

 

 

 

 

A = 3

B = A

A = ‘spam’

 

 

 

 

列表也是一种对象

 

 

 

这里相对于C++中的浅拷贝

 

 

 

 

这里相对于C+++的深拷贝

 

 

分片技术一般只用于列表,列表是有序的,字典和集合是无序的,

 

 

两种方法去检查是否相等

== is操作符

 

== 比较的是对象是否有相同的值

Is 操作符是检查对象是否指向同一个对象

 

 

 

 

 

 

 

字符串是一个有序的字符的集合, 列表和元组也是有序的

“”, ‘’ 都表示空字符串


 

 

三重引号:””” “”” 是一种编写多行文本数据的便捷方法。

列表分片三个值:

X[I:J:K]

I J-1 每隔K元素索引一次,K默认为1