开始Python学习第八课(函数(基础概念介绍))

从基础开始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)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值