函数与模块
if __name__ == ‘__main__’: #模拟程序的入口,一个编程的良好习惯
函数(function):是为完成一个操作而组合在一起的语句组
好处:1、可以省去编写重复代码的苦闷
2、可以组织和简化编码
3、提高代码可读性
分类:1、内置函数(官方文档:https://docs.python.org/zh-cn/3/library/functions.html)
老九常用函数总结:http://wiki.xuetang9.com/?p=7170
2、自定义函数
bool()如果不给参数,默认为False;值为0,空序列(空列表、空字符串)、None等,
返回False
str(),str(None)返回None(字符串)
complex(),将字符串转换为一个复数,运算符之间不能有空格,
ASCII码:空格-32 A-65 a-97
ord(),求当前字符对应的数字(ASCII码)
chr(),求当前数字对应的字符(ASCII码)
math模块
补充两个内置函数
eval(),编译执行函数,动态的表达式求值。
exec(),可以用来执行字符串语句。
变量的操作
globals(),返回当前作用域内的全局变量和其组成的字典
locals(),返回当前作用域范围内局部变量和其组成的字典
定义函数的语法:函数定义由函数名称、形式参数以及函数体组成
def <函数名>([参数列表]): # def:表示定义函数 <>:表示固定的,[]:表示可选的
<函数体>
[return <返回值列表>]
注意:Python中,传递参数的时候实际上传递的是对象(共享传参,形参是实参的别名)。
函数体中出现pass表示该函数不用实现。
当函数不写返回值的时候,默认回返回一个None
一个函数最好只做一件事。
函数的调用分为位置参数和命名关键字参数,使用位置参数要求参数按照定义函数
中的顺序进行传递,使用命名关键字时,参数的顺序是任意的。
可变参数:*是个分隔符,告诉Python解释器这是个可变参数。(可变参数实际
上是参数在传递给函数时,函数内部自动将多个参数组装成一个元组对象)。
参数的传递机制
可变数据类型呢故事指变量所指向的内存地址的值是可以被改变的。
想要改变列表原来的值必须使用下标进行访问修改。
传参使用切片,相当于创建一个新的切片列表进行访问修改,不影响原来的列表
模块化代码:模块化可以使代码易于维护和调试,提高代码的重用性,可以将函数的定义放在一个被称为模块的py文件中,这些模块文件后面就可以被我们的程序导入并重复使用了。
使用import进行引入。:import 模块名
引入包中的模块太长可以取别名:import 包名.模块名 as 别名
从某个包中引入某个模块:from 包名 import 模块名
导入某个包下的所有子模块(不推荐使用):from 包名 import *
变量的作用域:指变量可以在程序中被引用的范围
- 所有函数之外创建的变量是全局变量,可以被所有函数访问(在函数中修改全局变量不是一个好习惯)
- 在函数内部定义的变量被称为局部变量,只能在函数内部访问。局部变量的作用域从创建变量的地方开始,直到包含该变量的函数结束为止。
- 如果在函数中想访问当前模块定义的全局变量,那么需要在变量前添加global(全局的)关键字。
函数小总结:
可变与不可变类型
在Python中,一切皆为对象,一切皆为对象的引用
不可变的类型:int、float、string、number、tuple,特点是不可变对象的值并没有发生改变,变得只是创建了新的对象,改变了变量对对象的引用。
可变类型:列表、字典、集合、自定义类型,特点所谓可变对象,对象的内容可变。
传递参数的5种方式
- 位置参数:参数定义的位置好饿传递时的位置要求一致。(默认使用位置参数调用)
- 默认参数:在函数定义的时候在形参列表中使用=赋值,使用默认参数时,默认参数必须指向不可变对象。当默认参数类型为可变类型时,可变对象只会被执行一次
3、关键字参数(key word arguments):使用**定义
4、命名关键字参数:在关键字参数的基础上限制传入关键字的变量名(*后面的变量名)
5、不定长参数:使用*,注意和命名关键字的区别
注意:书写的时候,必须遵循的顺序为:位置参数 -> 默认参数 -> 不定长参数 -> 关键字参数 -> 命名关键字参数。如果参数列表中存在不定长参数,后面如果再出现命名关键字参数,就可以不用单独一个星号来分隔了
元组:tuple
1、与列表相似,不同之处就在于元组的元素不能被修改
2、列表使用的是中括号,元素使用的是小括号
3、列表属于可变类型,元组属于不可变类型(一旦创建,元素不能被修改)
4、Python内部对元组进行了大量的优化,访问和处理速度都比列表快
5、不能删除元组中的某个元素,只能使用del删除整个元组。
tuple1 = tuple((1,2,3)) #创建一个包含3个元素的元组对象
tuple2 = (1,) #创建一个元素的元组时,必须带有逗号
遇到问题,可加老九君个人QQ:614940318,请备注来自CSDN
老九学堂免费C、C++、Java课程地址: https://study.163.com/courses-search?keyword=老九学堂
徐老师线下全栈就业班开始报名啦~
零基础开讲,8个月,Java全栈学习,终身推荐就业