好友
阅读权限10
听众
最后登录1970-1-1
|
木头127
发表于 2022-3-27 20:47
本帖最后由 木头127 于 2022-3-27 21:06 编辑
Python函数和类
一、Python函数
任何程序里面包含的不是函数就是类,Python也是如此。
- 函数的定义
函数的作用有两个:①模块化编程 ②代码重用
函数是独立的,完成特定功能的代码段,在Python程序中,所有的一切都是函数,大多数是有名函数,也存在匿名函数。
#函数的基本语法:
def 函数名称([参数1,参数2,.....]): #这里的参数是形式参数
函数体
...
[return 返回值]
#尽量使用return来进行函数值的返回
-
函数的参数(形参和实参)
在函数定义和调用的时候,我们能根据自己的需求来实现参数的传递,函数的参数有两种形式:形参和实参。
形参:在函数定义的时候,括号中所编写的参数成为形式参数。
实参:在函数调用的时候,传递的参数成为实际参数
def hello(name):#name是定义时所编的形式参数,这里name是局部变量
return name
mingzi ='Mrzhang'
greet(mingzi)#函数调用时,括号内传递的是实际参数
函数的参数类型:位置参数、关键词参数、缺省参数,不定长参数、
在函数定义时,我们可以定义多个参数,但是在函数调用时,我们也应该传递多个参数,正常情况下,要一一对应。
位置参数:
def student(name,age,mobile):
print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
传递实参要一一对应
student('zhangsan',20,'1310389090')
顺序不能颠倒,否则意思就会改变,所以该参数也叫位置参数
关键词参数:
def student(name,age,mobile):
print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
传递实参要一一对应
student(name='zhangsan',age=20,mobile='1310389090')
通过键=值的形式指定内容,让函数更加清晰,即使位置改变,意思也不会改变。
缺省参数:也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可以不穿该默认值。
注意:定义缺省参数时,一定要把它卸载参数列表的最后面。
def student(name,age,gender='male'):
print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
传递实参要一一对应
student('zhangsan',20)
student('lisi',21,female)
student('wanger',18)
不定长参数:也叫可变参数
用于不确定调用的时候会传递多少个参数(无参数也可)的场景
分为包裹位置和包裹关键字参数
包裹位置参数
def student(*args):#args 元组类型数据对传递参数有顺序要求
print(f'学生的名字交{name},今年{age}岁了,联系方式是{mobile}')
student('zhangsan',20,'1310389090')
包裹关键字参数
def student(**kwargs):
kw=keyword+args
#kwargs字典类型数据,对传递参数没有顺序要求,格式要求key=value
print(f'学生的名字交{kwargs["name"],今年{kwargs["age"]岁了,联系方式是{kwargs["mobile"]}')
Python组包:把多个数据组成元组或字典的过程。无论是包裹位置传递还是包裹关键字传递,都是一个组包的过程。
-
Python拆包(元组和字典)
拆包:对于函数中的多个返回数据,去掉元组,列表或者字典 ,直接获取里面数据的过程。
元组的拆包过程
def func():
return 100,200 #返回多个值,使用tuple元组类型数据
定义两个变量接受元组中的每个数组进行拆包
num1,num2=func()
print(num1)
print(num2)
结果为 100 ,200
字典的拆包过程
dict1 = {'name':'小明', 'age':18}
a, b = dict1
print(a)
print(b)
获取字典中的数据
print(dict1[a])
print(dict1[b])
-
函数的变量(局部变量和全局变量)
在Python中,定义在函数外部的变量称之为全局变量;定义在函数内部的变量称之为局部变量。
全局变量作用范围:在整个程序范围内都可以直接使用
局部变量作用范围:在函数调用的过程中,开始定义,函数运行的过程中生效,执行完毕之后,进行销毁。(可以了解Python的垃圾回收机制)
num=1
def func():
i=1
num 为全局变量,i为局部变量
思考:能不能在局部作用域中对全局变量进行更改?
答:global关键字
num=10
def funca():
global num
若没有这一句,输出的num会等于 10,并没有更改全局变量
num =20
funca()
print(num)
global关键字可以用于多函数之间的数据共享
-
关于return返回值问题:
(1)如果一个函数有两个return,程序如何执行?
def return_text():
return 1
return 2
reslut=return_text()
print(result)
结果是返回 1 ,因为return可以退出当前函数,第一个return下面的代码就不执行了
(2)如果一个一个函数有多个返回值,该如何书写?
def return_text():
return 1,2
result=return_text()
print(result)
在python中,一个函数只能返回一个结果,如果想要返回多个结果,可以使用元组的形式,在学习元组时也有讲到过,元组可以返回多个值。
可以查看结果类型,type(result)
-
函数的调用:
在Python中函数和变量一样,都是先定义后进行调用
基本语法:
def hello(name):
return name+',hello!'
result=hello('Mrzhang') #直接使用函数名进行调用,赋值给str
print(result)
打印结果
-
函数的嵌套
函数的嵌套调用:一个函数里面又调用了另外一个函数。
Python代码执行遵循一个顺序原则: 从上往下,从左往右,一行一行地执行。
def funcA():
print('this is function A.')
def funcB():
print('' 40) # 可以打印40个
print('this is function B')
funcA()
print('' * 40)
funcB()
代码运行顺序(按照行数):1 3 8 4 5 6 2 7
代码执行流程:
执行第1行时仅仅定义了funcA函数,内部代码没有执行,跳过第2行继续执行,
执行到第3行,定义funcB函数,并没有真正的调用和执行。
代码跳到第8行,funcB函数,调用funcB并且执行内部代码,程序返回第4行
执行第4行,打印字符,并继续执行,直到第6行调用函数funcA(),跳到第2行。
第二行执行完毕后,返回funcB,继续第7行,打印字符串。
-
Python的内置函数:
内置函数无须从模块中导入,也不用定义 就可以直接在任意位置直接调用。
一些常用的内置函数
abs(-1):求绝对值,返回1
max([1,2,3]):求序列中最大值,可以是列表或元组
min(2,3,4):求序列中最小值,可以是列表或元组
divmod(6,3):取模,返回一个元组,包含商和余数
int(3.9):转换成整数,去尾转换,结果为3
float(3):转换成浮点数
str(123):转换成字符串
list((1,2)):元组转换为列表
tuple([1,2]):列表转换成元组
len([1,3,5]):求序列长度,可以是列表或元组
9.Python文件操作方法(读写)
open函数负责新建、打开文件,并返回操作对象。
read方法将文件内容读取到内存。
write方法将指定内容写入文件
close方法关闭文件,open文件后必须有close文件。
#open函数的语法
open(filename[,mode,encoding=])
'''
filename 要打开或新建的文件地址或者名称,字符串形式,例如 text.txt 或者E:/python/text.txt
mode 文件访问模式,只读,只写,读写等等,可选参数,有参数列表,默认模式为只读
encoding= 编码解码的标准,如果文件中包含中文信息,需要制定encoding=utf-8
'''
实例:
f=open('test.txt','a+',encoding='utf-8')
data=f.write('Hello World')
read=f.read()
print(read)
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|