一、函数
1.函数参数
函数的参数,增加了函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据。
2.形参和实参
3.函数的返回值
使用return
return 表示返回,后续的代码都不会被执行。
def sum_2_num(num1, num2):
"""对两个数字的求和"""
return num1 + num2
# 调用函数,并使用result变量接收计算结果
result = sum_2_num(10,20)
4.函数的嵌套调用
一个函数里面又调用了另外一个函数。
def test1():
print("*" * 20)
def test2():
print("-" * 20)
# 函数的嵌套调用
test1()
print("-" * 20)
test2()
分隔线演练
def print_line(char, times):
"""能够打印由任意字符组成的重复任意次数的分隔线"""
print(char * times)
def print_lines(char, times):
"""打印5行分割线
:param char:分割线使用的分隔字符
:param times:分割线重复的次数
"""
row = 0
while row < 5:
print_line(char,times)
row += 1
print_lines("~ ", 10)
利用PyCharm给函数增加文档注释
将鼠标移到函数名上,点击黄色小灯泡,选择"Insert documentation string stub"。
在函数调用处用CTRL+Q进行查看。
二、模块
1.模块是python程序架构的一个核心概念。
每一个以扩展名.py结尾的python源代码文件都是一个模块;在模块中定义的全局变量、函数都是模块能够提供给外界直接使用的工具。
模块好比工具包,要想使用这个工具包中的工具,就需要导入import这个模块。
2.示例
将以上分割线演练的代码复制到hm_01_分割线模块.py文件中,并在最后增加一行代码name = “Bob”,在hm_02_示例模块.py文件中,有以下代码:
import hm_01_分割线模块
hm_01_分割线模块.print_line("-" , 20)
print(hm_01_分割线模块.name)
可以在一个python文件中定义变量或者函数,然后在另一个文件中用import导入这个模块,导入之后,就可以使用模块名.变量/模块名.函数的方式,使用这个模块中定义的变量或者函数。
3.模块名也是一个标识符
4.Pyc文件
C是compiled编译过的意思。
操作步骤
浏览程序目录会发现一个__pycache__的目录;
目录下会有一个hm_01_分隔线模块.cpython-35.pyc文件,cpython-35表示Python解释器的版本;
这个pyc文件是由 官方的Python解释器将模块的源码转换为字节码;
【当python解释器发现import关键字时,就会将其对应的模块(很少会修改)编译成一个二进制文件,这样就不需要再解释一行执行一行,大大提高了速度】
Python这样保存字节码是作为一种启动速度的优化
字节码
Python在解释源程序时是分成两个步骤的:
a.首先处理源代码,编译生成一个二进制字节码
b.再对字节码进行处理,才会生成CPU能够识别的机器码
- 有了模块的字节码文件之后,下一次运行程序时,如果在上次保存字节码之后没有修改过源代码,Python将会加载.pyc文件并跳过编译这个步骤。
- 当Python重编译时,它会自动检查源文件和字节码文件的时间戳。
- 如果你又修改了源代码,下次程序运行时,字节码将自动重新创建。
三、高级变量
1.数据类型
数字型:int,float,bool,complex(复数型)
非数字型:字符串、列表、元祖、字典
在python中,所有非数字型变量都支持以下特点:
都是一个序列sequence,也可以理解为容器;
取值[];
遍历for in;
计算长度、最大/最小值、比较、删除;
链接+和重复*;
切片;
2.列表
(1)List(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组。
- 专门用于存储一串信息
- 列表用[]定义,数据之间使用,分隔
- 列表的索引从0开始
索引就是数据在列表中的位置编号,索引又可以被称为下标
注意:从列表中取值时,如果超出索引范围,程序会报错
name_list = ["ZhangSan", "LiSi", "WangWu"]
(2)确认列表常用操作
在IPython中输入
name_list = []
# 这里列表中没有任何内容
然后输入name_list.
按tab键,就可以看到列表的各种常用操作。
(3)列表的常用操作
name_list = ["ZhangSan", "LiSi", "WangWu"]
# 1.取值(注意不要越界)
# list index out of range - 列表索引超出范围
print(name_list[2]) # WangWu
# 2.取索引(确定数据在列表中的位置)
print(name_list.index("LiSi")) # 1
# ValueError: 'ZhaoLiu' is not in list
# print(name_list.index("ZhaoLiu")) # error
# 3.修改指定位置的数据
name_list[1] = "李四"
# IndexError: list assignment index out of range
# name_list[3] = "赵六" #error
# 4.向列表中增加数据
# append方法向列表的末尾追加数据
name_list.append("小明")
# insert方法在列表的指定索引位置插入数据
# insert(self, index, object)
name_list.insert(1, "小红")
# extend方法可以将其他列表中的完整内容,追加到当前列表的末尾
# extend(self, iterable)
temp_list = ["孙悟空", "猪悟能", "沙悟净"]
name_list.extend(temp_list)
# 5.删除列表中的数据
# remove方法从列表中删除指定的数据
# remove(self, object)
name_list.remove("WangWu")
# pop(self, index)
# pop方法不加任何参数,表示默认把列表最后一个元素删除
name_list.pop()
# pop方法可以指定要删除元素的索引
name_list.pop(3) # 删除name_list[3]
# clear方法可以清空整个列表
# clear(self)
name_list.clear()
# 清空后输出[]
print(name_list)
使用del关键字从列表删除数据
提示:在日常开发中,要从列表中删除数据,还是建议使用列表提供的方法而不是del关键字。
name_list = ["张三", "李四", "王五"]
# 使用del关键字(delete)删除列表元素
del name_list[1]
print(name_list) # ['张三', '王五']
# del关键字本质上是用来将一个变量从内存中删除的
name =