一.函数
1.函数概述
#需求:半径分别为r1=10,r2=9.4,r3=22,求圆的面积
r1=10
r2=9.4
r3=22
s1=3.14*r1**2
s2=3.14*r2**2
s3=3.14*r3**2
#使用函数优化
def area(radius):
s=3.14*radius**2
area(r1)
area(r2)
area(r3)
在一个完整的项目中,某些功能会被反复使用,那么就可以将该功能对应的代码封装成函数,当要再次使用这个功能的时候直接使用即可
本质:函数是对某个特殊功能的封装
优点:
a.简化代码结构
b.提高代码的复用性
c.提高代码的可维护性【如果需求发生变化,则只需要更改函数内部】
2.函数使用
定义函数:
语法:
def 函数名(参数1,参数2......)
函数体
return 函数表达式或者常量或者变量
说明:
a.一个完整的函数由两个部分组成:函数的声明和函数的实现
b.def:definition,定义,函数是以def定义的
c.函数名:标识符,只需要遵循标识符的规则即可,尽量做到见名知意
d.(参数1,参数2......):()表示参数的开始和结束,其中参数1,参数2......被称为参数列表,本质上就是一个变量,参数列表也可以为空
e.函数体:需要被封装的特殊功能
f.return:返回,一般用于结束函数,并将函数值携带给函数的调用者,不带有任何数据的return其实相当于返回None
2.1简单的函数
简单的函数;无参无返回值
代码演示:
#定义无参无返回值的函数
def myPrint():
print("hello world")
#注意;函数定义好之后,不会自动执行,需要手动进行调用
"""
调用格式;函数名(实际参数)
说明:
a.出现在函数声明部分的参数被称为形式参数,简称形参,本质上是一个变量【形参=实参】
b.出现在函数调用部分的参数被称为实际参数,简称实参,本质上是一个数据
注意:
a.进行传参的时候,形参和实参需要保持匹配
b.如果形参为空,调用函数的时候,()也不能省略
c.函数调用的本质:实参给形参赋值的过程
"""
myPrint()
#注意:如果在同一个py文件中,出现同名的函数,则后出现的覆盖先出现的
def myPrint():
print("hello python")
myPrint()
2.2函数的调用
代码演示:
#函数的调用
def show1():
print("aaaaa")
show2()
def show2():
print("bbbbb")
show3()
def show3():
print("ccccc")
show1()
#show2()
#show3()
#函数入栈
2.3函数的参数
函数的调用:实参给形参赋值的过程,被称为传参
#定义一个有参的函数
def myFunc(str,age):
print(str,age) #str=s1 str=a1
s1="abc"
a1=10
myFunc(s1,a1)
#注意:形参的数据类型取决于:实参的类型,具体的需求
def myFunc1(str,age,hobby):
print(str,age,hobby)
age+=1
#注意:实参和形参要进行严格的匹配【类型和数量】
myFunc1("abc",10) #TypeError: myFunc1() missing 1 required positional argument: 'hobby'
2.4参数的传递
1>值传递:传递的是不可变的数据类型,比如number,string,tuple
2>引用传递:传递的是可变的数据类型,比如list,dict,set
代码演示:
#值传递
def fun1(a):
print(id(a))
a=10
print(id(a))
temp=20
print(id(temp))
#a=temp
fun1(temp)
print(temp)
#a的值发生改变,对te