本系列为Python编程基础的学习笔记。
本文主要介绍Python的用户输入、while循环、函数的相关基础知识。
一、用户输入
1.1 字符串输入
input()函数
输出用户提示信息,并将用户输入的字符串存储到一个变量中,格式:
变量名 = input(提示信息)
例如:
1 | message = input('Name: ') |
运行结果如下:
Name: Test
Test
当提示过长时,可先将提示存储到单独的变量中再输出,例如:
1 | prompt = 'This is the first part.' |
运行结果如下:
This is the first part.
Name: Test
Test
1.2 数字输入
int()函数
将input()函数输入的字符串表示转换为数值表示,格式:
变量名 = input(提示信息)
变量名 = int(变量名)
例如:
1 | num = input('Number: ') |
二、while循环
2.1 while循环
while循环将不断运行,直到指定的条件不满足为止,例如:
1 | num = 1 |
运行结果为:
1
2
3
4
2.2 循环标志
标志:在要求多个事件都满足才能继续运行的程序中,可以定义一个变量用于循环判断,该变量称为标志。
若全部事件都满足,标志为True,循环继续;
若任一事件不满足,标志为False,循环终止。
2.3 break和continue
break:不再运行循环中的剩余代码,立即退出循环,不受条件测试结果的影响。
continue:不再运行循环中的剩余代码,回到循环开头,根据条件测试结果判断是否继续循环。
2.4 while循环处理列表和字典
要在遍历列表的同时对其进行修改,可使用while循环。
列表之间移动元素
例如:
1 | list1 = ['test1', 'test2', 'test3'] |
运行结果为:
test3
test2
test1
删除列表中所有特定元素
例如:
1 | example = ['test', 'test', 'TEST'] |
运行结果为:
[‘TEST’]
填充字典
例如:
1 | examples = {} |
运行结果为:
ID: 1
Name: TEST
Continue?(yes or no): yes
ID: 2
Name: test
Continue?(yes or no): no
{‘1’: ‘TEST’, ‘2’: ‘test’}
三、函数
3.1 函数定义
def关键字
使用关键字def来定义函数,格式:
def 函数名(参数信息):
文档字符串
函数体语句
例如:
1 | def test(): |
注意:
参数可以为空,但是括号必不可少;
文档字符串用三引号括起,用来描述函数的功能,Python用其来生成有关程序中函数的文档。
函数调用
依次指定函数名和括号内的参数信息,例如调用上述函数:
1 | test() |
运行结果为:Hello!
实参和形参
形参:函数完成其工作所需的一项信息;
实参:调用函数时传递给函数的信息。
例如:
1 | def test(message): |
其中,message是形参,’Hello!’是实参。
默认值
在定义函数时可给参数赋予默认值。
在函数调用时,如果参数被显式提供实参,则默认值被修改,否则参数使用默认值。
例如:
1 | def test(message='Hello!'): |
运行结果为:Hello!
注意:在使用默认值时,参数列表中必须先列出无默认值的形参,再列出有默认值的形参。
使用函数的注意事项
每个函数都应只负责一项具体的工作;
总是可以在一个函数中调用另一个函数,这有助于将复杂的任务划分为一系列的步骤。
3.2 传递实参
位置实参
要求实参的顺序和形参的顺序相同,Python将按顺序将函数调用中的实参关联到函数定义中相应位置的形参。
例如:
1 | def test(s_id, s_name): |
关键字实参
要求每个参数都由变量名和值组成,直接在实参中将名称和值关联起来,函数调用时无需考虑实参顺序。
例如:
1 | def test(s_id, s_name): |
参数错误
当提供的实参多于或少于函数所需的形参时,将出现参数不匹配的错误,例如:
1 | def test (message): |
将产生报错:

3.3 返回值
在函数中,可使用return语句将值返回到调用函数的代码行。
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。
3.4 传递列表
函数访问修改列表
将列表传递给函数之后,函数便能直接访问列表中的内容。
将列表传递给函数之后,函数同样能够对其内容进行修改,并且这种修改是永久性的,例如:
1 | example1 = ['test1', 'test2', 'test3'] |
运行结果为:
[]
[‘test3’, ‘test2’, ‘test1’]
禁止函数修改列表
向函数传递列表的副本而不是原件,例如在上例当中改为:
1 | test(example1[:], example2) |
运行结果变为:
[‘test1’, ‘test2’, ‘test3’]
[‘test3’, ‘test2’, ‘test1’]
注意:不建议这么做,理由是使用先成列表可以避免花时间和内存来创建副本,提高效率。
3.5 传递任意数量实参
使用任意数量的值实参
函数有一个*开头的形参(*examples),该形参能够将提供给函数的不定数量的值统统接收。原因是*开头的形参定义了一个空元组(examples),所有接收到的值都得以封装到该元组当中。例如:
1 | def test(*examples): |
运行结果为:
test1
test2
test3
使用任意数量的关键字实参
函数有一个**开头的形参(**examples),该形参能够将提供给函数的不定数量的键-值对统统接收。原因是**开头的形参定义了一个空字典(examples),所有接收到的键-值对都得以封装到该字典当中。例如:
1 | def test(**examples): |
运行结果为:
ID
1
Name
test
结合使用位置实参和任意数量实参
要让函数接受不同类型的实参时,必须让函数先匹配位置实参和关键字实参,最后再匹配任意数量实参。
注意:在编写函数时,可以以各种方式混合使用位置实参、关键字实参和任意数量实参。
3.6 将函数存储在模块
函数存储在被称为模块的独立文件中(扩展名为.py),使用import语句可以将模块代码导入到主程序中使用。
优点
函数在独立的文件中,可以隐藏程序代码的细节,将重点放在高层逻辑上;
能够在众多的不同程序中重用函数;
便于函数库的共享使用。
导入整个模块
使用一条import语句并指定模块名,可以在程序中使用该模块的所有函数,格式:
导入:import 模块名
使用:模块名.函数名()【句点表示法】
例如:
1 | import test |
导入特定函数
使用from和import结合导入特定函数,格式:
导入:from 模块名 import 函数名1, 函数名2, 函数名3, ……
使用:函数名()
例如:
1 | from test import function1, function2 |
使用as给函数指定别名
格式:
from 模块名 import 函数名1 as 函数别名1, 函数名2 as 函数别名2, ……
例如:
1 | from test import function1 as fun1, function2 as fun2 |
使用as给模块指定别名
格式:
import 模块名 as 模块别名
例如:
1 | import test as te |
导入模块中所有函数
使用*可以导入模块中的所有函数,例如:
1 | from test import * |
缺点:不建议使用该种方法,理由是模块中的函数直接被复制到这个程序文件中,可能会造成函数冲突出现意想不到的错误。
解决:只导入需要使用到的函数;导入整个模块,使用句点表示法。
3.7 函数规范
函数名应具有描述性,只在其中使用小写字母和下划线;
函数应包含简要阐述其功能的注释,注释采用文档字符串格式;
所有import语句应当放在文件开头(若文档开头有注释,放在注释内容之后);
函数与函数、函数与其它部分代码之间应当使用两个空行进行分开;
当参数较多时,其函数定义格式如下所示:
1 | def function_name( |
(未完待续…)