*** 开始Python学习第八课***
- 一. 函数(上)
- 1. 函数的概念
- 1.1 函数的简介
- 1.2 函数的表示
- 2. 函数中的参数
- 2.1 函数中的参数的介绍
- 3. 函数的使用
- 3.1 函数调用
- 3.2 参数传递
- 二. 作业
- 4.1 打印名片程序:
- 输入姓名,电话号码,性别,最后打印出来名片
- 控制姓名长度为6-20 ,电话号码长度11, 性别只能允许输入男或女每一样信息不允许为空
- 4.2 使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21...即: 起始两项均为1,此后的项分别为前两项之和
- 4.3 编写⼀段代码,定义⼀个函数求1-100之间所有整数的和,并调用该函数打印出结果
从基础开始Python学习(4.29)第八课
python中的函数(上)
一. 函数(上)
1. 函数的概念
1.1 函数的简介
(1)函数的概述
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率
(2)函数的
函数也是⼀个对象,函数用来保存⼀些可执⾏的代码,并且可以在需要时,对这些语句进⾏多次调用
注意: 函数名必须符合标识符的规范(可以包含字母,数字,下划线但是不能以数字开头)
1.2 函数的表示
(1)函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
(2)任何传入参数和自变量必须放在圆括号()中间,圆括号之间可以用于定义参数
(3)函数内容以冒号 : 起始,并且缩进
(4)return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None
def 函数名(参数列表(是函数的形参)):
函数体
def sum(n): #def是函数创建的标识,sum是创建函数的名称,n是函数的形参
num = 1
sum = 0
while num <= n: #是函数的执行语句
sum = sum + num
num += 1
print(sum)
sum(100) #使用函数名()调用函数,函数有形参要输入实参
2. 函数中的参数
2.1 函数中的参数的介绍
(1)形参
形参(形式参数) :定义形参就相当于在创建的函数内部声明了变量,但是并不是赋值
(2)实参
实参(实际参数):指定了形参,那么在调⽤函数时必须传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参
(3)不定⻓参数
定义函数时,当不确定输入的实参个数时,可以在形参中使用*args,这样这个形参可以获取到所有的实参,它会将所有的实参保存到⼀个元组中
**kwargs形参可以接收其他的关键字参数,它会将这些参数统⼀保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
def sum(n): #def是函数创建的标识,sum是创建函数的名称,n是函数的形参
print('*'*n)
sum(10) #sun()开始调用自建的函数,10就是创建函数的实参
def sun2 (*args,**kwargs): #*args可将输入的实参变为元组,*kwargs将函数与函数值对应形成字典
print(args,kwargs)
sun2(1,2,3,a =15,b = 16)
3. 函数的使用
3.1 函数调用
定义一个函数:给自己创建的函数命名,指定函数里包含的参数,和要执行的代码块,函数完成以后,可以直接调用使用,也可在其他函数内调用
def sum(s): #def是函数创建的标识,sum是创建函数的名称,n是函数的形参
print('*'*s)
sum(10) #sun()开始调用自建的函数,10就是创建函数的实参
print(sum(20)) #也可在其他函数如print()函数内进行调用
3.2 参数传递
(1)函数实参参数的分类
函数的实参参数可依据数据序列分为可变参数对象和不可变参数对象
- 可变类型:如列表的可变对象,变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
- 不可变类型:如元组,整数,字符串,变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。
def change(a):
print('在函数内传递的实参a的id',id(a)) # 指向的是同一个对象
a = 10
print('在函数内改变a后id',id(a)) # 一个新对象
a = 1
print('初始负值a的id',id(a))
change(a)
print('-------------------------')
def changeme(mylist):
print('在函数内传递的列表的id',id(mylist))
mylist.append([1, 2, 3, 4])
print('修改列表后列表的id',id(mylist))
mylist = [10, 20, 30]
print('初始负值列表的id',id(mylist))
changeme(mylist)
(2)自建函数的参数传递:
(1)位置参数
(2)关键字参数
(3)不定长参数
// An highlighted block
var foo = 'bar';
二. 作业
4.1 打印名片程序:
输入姓名,电话号码,性别,最后打印出来名片
控制姓名长度为6-20 ,电话号码长度11, 性别只能允许输入男或女每一样信息不允许为空
def user_name():
User_name = input('请输入您的姓名:')
while len(User_name) < 6 or len(User_name) >20 or ' ' in User_name:
User_name = input('您输入的姓名长度必须在6-20之间且不能为空,请重新输入:')
return User_name
def phone_num():
Phone_num = input('请输入您的电话号码:')
while len(Phone_num) != 11:
Phone_num = input('请输入11位的电话号码:')
return Phone_num
def gen_type():
Gen_type = input('请输入您的性别:')
while (Gen_type !='男') and (Gen_type !='女') or (' ' in Gen_type):
Gen_type = input('输入正确的性别,且此项不能为空,请重新输入:')
return Gen_type
def card(Us_name1,Us_name2,Phon_num,Gen_type,):
print('''
=================***==================
**{}**的名片
姓名:{}
性别; {}
电话号码:{}
=================***==================
'''.format(Us_name1,Us_name2,Gen_type,Phon_num))
while True:
User_name = user_name()
Phone_num = phone_num()
Gen_type = gen_type()
print('====请收好您的名片====')
card( User_name, User_name,Phone_num,Gen_type)
4.2 使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21…即: 起始两项均为1,此后的项分别为前两项之和
def fun(num):
list = []
a = 1
b = 1
for i in range(num):
if i == 0:
list.append(a)
if i > 0 :
a,b = b,a+b
list.append(b)
print(list)
fun(20)
4.3 编写⼀段代码,定义⼀个函数求1-100之间所有整数的和,并调用该函数打印出结果
def sum(n):
num = 1
sum = 0
while num <= n:
sum = sum + num
num += 1
print(sum)
sum(100)