Python基础知识及函数介绍
-
title()
以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写; -
要将字符串改为全部大写或者全部小写可以用
upper()
和lower()
; -
Python用加号
(+)
来合并字符串; -
要在字符串中添加制表符,可使用字符组合\t,要在字符串中添加换行符,可使用字符组合\n;
-
要确保字符串末尾没有空白,可使用方法
rstrip()
,但这种删除只是暂时的,要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中,剔除字符串开头的空白,或同时删除字符串两端的空白时,可以分别使用lstrip()
和strip()
; -
Python用两个
*
号表示乘方运算; -
可调用函数str(),它让Python将非字符串值表示为字符串;
-
在Python中,注释用井号(
#
)标识; -
在Python中,用方括号(
[]
)来表示列表,并用逗号来分隔其中的元素;要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内; -
通过将索引指定为-1,可让Python返回最后一个列表元素,同理可以用-2访问倒数第二个列表元素,以此类推;
-
要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值;
-
利用方法
append()
可将新元素添加到列表末尾; -
使用方法
insert()
可在列表的任何位置添加新元素,需要指定新元素的索引和值; -
如果知道要删除元素在列表中的位置,可以使用
del
语句删除; -
方法
pop()
可删除列表末尾的元素,并能够接着使用它,实际上,可以使用pop()
来删除列表中任何位置的元素,只需要在括号中指定要删除的元素的索引即可; -
如果只知道要删除元素的值,可使用方法
remove()
; -
可使用方法
sort()
对列表进行永久性排序,如果要按字母顺序相反的顺序排列列表元素,只需向sort()
方法传递参数reverse=True
; -
可使用函数
sorted()
对列表进行临时排序,如果要按字母顺序相反的顺序排列列表元素,只需向sorted()
函数传递参数reverse=True
; -
要反转列表元素的排列顺序,可使用方法
reverse()
; -
可使用函数
len()
快速获悉列表的长度; -
Python根据缩进来判断代码行与前一个代码行的关系;
-
使用Python函数
range()
能够轻松地生成一系列的数字,使用range()
时,如果输出不符合预期,请尝试将指定的值加1或减1,要创建数字列表,可使用函数list()
将range()
的结果直接转换为列表,例如numbers = list(range(1,6))
,使用函数range()
时,还可指定步长,例如even_numbers = list(range(2,11,2))
; -
有几个专门用于处理数字列表的python函数,可以用他们轻松地找出数字列表的最大值
max()
、最小值min()
和总和sum()
; -
列表解析将
for
循环和创建新元素的代码合并为一行,并自动附加新元素,注意,这里的for
语句末尾没有冒号; -
要创建切片,可指定要使用的第一个元素的索引和最后一个元素的索引加1;
player[0:3]
-
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引;
players1 = players[:]
-
元组是不可变的列表,看起来犹如列表,但使用圆括号而不是方括号来标识,定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样,如果需要存储的一组值在程序的整个生命周期内都不变,可使用元组;
-
在字处理文档中,大家常常使用制表符而不是空格来缩进,另外,很多程序员都建议每行不超过
80
字符,注释的行长都不超过72
字符; -
要检查是否两个条件都为
True
,可使用关键字and
将两个条件测试合而为一,关键字or
也能让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试; -
要判断特定的值是否已包含在列表中,可使用关键字
in
,还有些时候,确定特定的值未包含在列表中很重要,在这种情况下,可使用关键字not in
; -
Python不要求
if-elif
结构后面必须与else
代码块; -
在
if
语句中将列表名用在条件表达式中时,Python将在列表至少包含一个元素时返回True
,并在列表为空时返回False
; -
在Python中,字典用放在花括号
{}
中的一系列键-值对表示,键和值之间用冒号分割,而键-值对之间用逗号分隔; -
字典是一种动态结构,可随时在其中添加键-值对,可一次指定字典名、用方括号括起的键和相关联的值;
alien['x_position'] = 0
-
使用字典来存储用户提供的数据或在编写能自动生成大量的键-值对的代码时,通常都需要先定义一个空字典;
-
对于字典中不再需要的信息,可使用
del
语句将相应的键-值对彻底删除,使用del
语句时,必须指定字典名和要删除的键;del alien['points']
-
要编写用于遍历字典的
for
循环,可声明两个变量,用于存储键-值对中的键和值,对于这两个变量,可使用任何名称; -
用方法
keys()
遍历字典中的所有键,方法keys()
并非只能用于遍历,实际上,它返回一个列表,其中包含字典中的所有键; -
如果你感兴趣的主要是字典包含的值,可使用方法
values()
,它返回一个值列表,而不包含任何键; -
为剔除重复项,可使用集合(
set
),通过对包含重复元素的列表调用函数set()
,可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合; -
列表和字典的嵌套层级不应太多,如果嵌套层级比前面的示例多得多,很可能有更简单的简单的解决问题的方案;
-
函数
input()
让程序暂停运行,等待用户输入一些文本,获取用户输入后,Python将其存储在一个变量中,以方便你使用,每当你使用函数input()
时,都应指定清晰而易于明白的提示,准确地指出你希望用户提供什么样的信息——任何指出用户该输入何种信息的提示都行; -
使用函数
input()
时,Python将用户输入解读为字符串,函数int()
将数字的字符串表示转换为数值表示; -
处理数值信息时,求模运算符(
%
)是一个很有用的工具,它将两个数相除并返回余数; -
for
循环用于针对集合中的每个元素的一个代码块,而while
循环不断地运行,直到指定条件不满足为止; -
在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志(
flag
),充当了程序的交通信号灯。你可让程序在标志为True时继续运行,并在任何时间导致标志的值为False
时让程序停止运行; -
要立即退出
while
循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break
语句; -
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用
continue
语句,它不像break
语句那样不再执行余下的代码并退出整个循环; -
如果程序陷入无限循环,可按
Ctrl+C
,也可关闭显示程序输出的终端窗口; -
使用关键字def定义函数,定义以冒号结尾;
def great_user():
-
""" """
所包括的文本是被称为文档字符串的注释,描述了函数是做什么的。文档字符串用三引号括起,Python使用他们来生成有关程序中函数的文档; -
向函数传递实参的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成,还可使用列表和字典;
-
编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法;
-
使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。这让Python依然能够正确地解读位置实参;
-
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构;
-
函数只有一个形参
*toppings
,但不管调用语句提供了多少实参,这个实参都将它们统统收入囊中,形参名*toppings
中的星号让Python创建一个名为toppings
的空元组,并将收到的所有值都封装到这个元组中;def make_pizza(*toppings):
-
如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参(
*toppings
)放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中; -
有时候,需要接收任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写成能够接受任意数量的键-值对——调用语句提供了多少就接受多少。形参
**user_info
的两个星号让Python创建一个名为user_info
的空字典,并将收到的所有名称-值对都封装到这个字典中;def build_profile(first,last,**user_info):
-
import语句允许在当前运行的程序文件中使用模块中的代码,模块是扩展名为.py的文件,包含要导入到 程序中的代码。只需编写一条
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
,若使用这种语法,调用函数时就无需使用句点; -
关键字
as
将函数重命名为你提供的别名:指定别名的通用语法如下:from module_name import function_name as fn;
-
通过给模块指定简短的别名,让你能够更轻松地调用模块中的函数,如:
import pizza as p;
-
使用星号(
*
)运算符可让Python导入模块中的所有函数:from pizza import *
,由于导入了每个函数,可通过名称来调用每个函数,而无需使用句点表示法; -
根据约定,在Python中,首字母大写的名称指的是类;
-
要访问实例的属性,可使用句点表示法;
my_dog.name
-
要调用方法,可指定实例的名称和要调用的方法,并用句点分隔它们;
my_dog.sit()
-
可以用三种不同的方式修改属性的值:直接通过实例进行修改、通过方法进行设置;通过方法进行递增(增加特定的值);
-
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,原有的类成为父类,而新类成为子类,子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法;
-
创建子类时,父类必须包含在当前文件中,且位于子类前面,定义子类时,必须在括号内制定父类的名称;
class ElectricCar(Car):
-
super()
是一个特殊的函数,帮助python将父类和子类关联起来; -
对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。为此,可在子类中定义一个这样的方法,即它与要重写的父类方法同名,这样,Python将不会考虑这个父类方法,而只关注你在子类中定义的相应方法;
-
使用代码模拟实物时,你可能会发现自己给类添加的戏节越来越多:属性和方法清单以及文件都越来越长。在这种情况下,可能需要将类的一部分作为一个独立的类提取出来,可以将大型类拆分为多个协同工作的小类;
-
可以导入整个模块,再使用句点表示法访问需要的类;
-
要导入模块中的每个类,可使用下面的语法:
from module_name import *
,不过不推荐使用这种导入方式,需要从一个模块中导入很多类时,最好导入整个模块,并使用module_name.class
语法来访问类; -
要创建字典并记录其中的键-对的添加顺序,可使用模块
collections
中的OrderedDict
类;from collections import OrderedDict favorite_languages = OrderedDict()
-
类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线;
-
对于每个类,都应紧跟再类定义后面包含一个文档字符串。这种文档字符串简要地描述类的功能,并遵循编写函数的文档字符串时采用的格式约定。每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述;
-
可使用空行来组织代码,但不要滥用。在类中,可使用一个空行来分隔方法,而在模块中,可使用两个空行分隔类;
-
需要同时导入标准库中的模块和你编写的模块时,先编写导入标准库模块的
import
语句,再添加一个空行,然后编写导入你自己编写的模块的import
语句。在包含多条import
语句的程序中,这种做法让人更容易明白程序使用的各个模块都来自何方; -
函数
open()
接收一个参数:要打开文件的名称;with open('pi_digit.txt') as file_object:
-
关键字
with
在不再需要访问文件后将其关闭; -
使用方法
read()
读取文件的全部内容;file_object.read()
-
相对文件路径让Python到指定的位置去查找,而该位置是相对于当前运行的程序所在目录的;
with open('text_files\filename.txt') as file_object
-
绝对路径通常比相对路径更长,因此将其存储在一个变量中,再将该变量传递给
open()
会有所帮助; -
要以每次一行的方式检查文件,可对文件对象使用
for
循环;for line in file_object:
-
使用关键字
with
时,open()
返回的文件对象只在with
代码块内可用。如果要在with
代码块外访问文件的内容,可在with
代码块内将文件的各行存储在一个列表中,并在with
代码块外使用该列表:你可以立即处理文件的各个部分,也可推迟到程序后面再处理; -
方法
readline()
从文件中读取每一行; -
读取文本文件时,Python将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函数
int()
将其转换为整数,或使用函数float()
将其转换为浮点数; -
可使用方法
replace()
将字符串中的特定单词都替换为另一个单词; -
打开文件时,可指定读取模式(‘
r
’)、写入模式(‘w
’)、附加模式(’a
‘)或让你能够读取和写入文件的模式(’r+
‘)。如果你省略了模式实参,Python将以默认的只读模式打开文件;with open(filename,'w') as file_object:
-
如果你要写入的文件不存在,函数
open()
将自动创建它。然而,以写入(’w
‘)模式打卡文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件; -
使用文件对象的方法
write()
将一个字符串写入文件; -
Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数
str()
将其转换为字符串格式; -
如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件,你以附加模式打开文件时,Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。如果指定的文件不存在,Python将为你创建一个文件;
-
异常是使用
try-except
代码块处理的。try-except
代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。使用了try-expect
代码块时,即便出现异常,程序也将继续运行:显示你编写好的友好的错误信息,而不是令用户迷惑的traceback
; -
处理
ZeroDivisionError
异常:这个实例还包含一个else
代码块;依赖于try
代码块成功执行的代码都应放到else
代码块中;
try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero!")
else:
print(answer)
-
使用方法
spilt()
,它跟据一个字符串创建一个单词列表; -
Python有一个
pass
语句,可在代码块中使用它来让Python什么都不要做; -
模块
json
让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据; -
函数
json.dump()
接受两个实参:要存储的数据以及可用于存储数据的文件对象; -
通常使用文件扩展名
.json
来指出文件存储的数据为JSON
格式; -
代码能够正确的运行,但可做进一步的改进——将代码划分为一系列完成具体工作的函数。这样的过程被成为重构。重构让代码更清晰、更易于理解、更容易扩展;
-
map()
函数 -
python使用
input().split()
接收多个用户输入,input()
接收多个用户输入需要与split()
结合使用; -
rjust()
方法返回一个原字符串右对齐,并使用空格填充至长度width
的新字符串。如果指定的长度小于字符串的长度则返回原字符串。