函数基础 (上)
2.1 函数简介 function
input(),print(),range()函数等等
现在的代码可复用性非常差
函数是干嘛的?就是存数据的
总结我们函数的优点:
1.遇到重复功能的时候,直接调用就可以,减少代码量
2.提升代码,项目的结构性,分工明确,提高代码的可读性
3.遇到扩展功能时,修改比较方便
自定义函数,将一段有规律的、可重复使用的代码定义成函数,一次编写,多次调用
n = 0
for i in 'https://www.baidu.com/':
n += 1
print(n)
print(len('https://www.baidu.com/'))
函数的本质就是一段有特定功能、可以重复使用的代码
这段代码已经被提前编写好了,并且起了一个好听的名字
def my_len(str):
lenght = 0
for c in str:
lenght += 1
return lenght
lenght = my_len('https://www.baidu.com/')
print(lenght)
2.2 函数的定义
定义函数
def 函数名(形参1,形参2,形参n):
代码块
2.3 函数的调用
语法: 函数名()
要先创建,在调用
def fn():
print('这是我的第一个函数')
print('hello')
print('吃了吗')
print('再见')
fn()
注意:
fn 是什么 函数对象
fn() 是什么 调用函数
print 是什么 函数对象
print() 是什么 调用函数
练习:
定义一个login函数,功能是输入用户名和密码,验证是否正确
def login():
username = input('用户名:')
password = input('密码:')
if username == 'root' and password == '123':
print('登陆成功')
else:
print('登陆失败')
login()
2.4函数的参数
2.4.1 形参和实参
参数可以分为有参和无参
什么是无参?就是在定义函数时,括号里面没有东西就是无参
有参指的就是括号里面有参数
定义函数一般都是需要实现某种功能的
定义一个函数,可以用来求任意两个数的和
def sum():
print(1+1)
sum()
def sum():
a = 66
b = 99
print(a+b)
sum()
函数的参数:在定义函数时,可以再函数名后()中定义数量不等的形参,注意 :可以有也可以没有,可以有一个也可以有很多个,多个形参之间我们使用逗号隔开
什么叫形参? 形式参数,定义形参就相当于在函数内部声明了变量,但是没有赋值
实参:实际参数,在函数定义时制定了形参,在调用的时候必须传递实参,实参会赋值给对应的形参,有几个形参就必须传递几个实参
fn(a,b):
print('a=',a)
print('b=',b)
fn(666,888)
def sum(a,b):
print(a,'+',b,'=',a+b)
sum(5.5,1.4)
总结:我们在定义函数的时候叫形参,为什么叫形参,因为那个参数是形式的,并没有值,需要调用的时候才可以确定值
调用的时候叫实参
注意:定义了多少个形参就要传递多少个实参
2.4.2 参数的传递方式
参数呢他在传递的时候也是有不同的方式,在形参中,有我们的一个默认值参数
def fn(a,b,c=10):
print('a=',a)
print('b=',b)
print('c=',c)
fn(1,2)
2.4.3 位置参数和关键字参数
1.位置参数就是将对应位置的实参赋值给对应位置的形参
def ms(年龄,姓名,手机号,qq号,微信号,国家,父亲名字,省份,母亲名字)
pass
ms()
2.关键字参数:可以不按照形参定义的顺序来传递,而是直接会根据参数名来传递参数
def fn(a,b,c):
print('a=',a)
print('b=',b)
print('c=',c)
fn(a=2,c=3,b=2)
好处是什么:不需要记忆我们参数的一个顺序,只需要记住名字就可以了
位置参数和关键字参数可以混合使用
混合使用关键字和位置参数时,位置参数必须在关键字参数的前面
2.4.4实参的类型
函数在调用的时候不会限制你的类型,实参可以传递任意类型
def fn(a):
print('a=',a)
b = [True]
b = fn
fn(b)
a= <function fn at 0x000002880C7385E0>
实参可以是任意一个类型,什么都行