python笔记 函数,参数,形参和实参,参数的传递

2022年7月31日10:15:35

8. 函数

8.1 函数概念

  1. 函数也是一个对象

  2. 函数用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次调用

  3. 语法

    def 函数名([形参1,形参2,形参3…]):
    代码块

    注意:函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)

  4. 函数对象和调用函数:拿print函数举例子,print是函数对象 print()是调用函数

8.2 函数的参数

简单的来说,函数是一个处理的过程形如fun()。但是如果要用函数将输入的数据进行处理,则要将数据导入进函数,于是就可以将数据在fun后的()输入,从而以参数的形式进入到函数中,参数的形式可以是字符串、数字、列表、字典、甚至是已经定义好的函数。

1. 形参和实参

  • 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值
  • 实参(实际参数)指定了形参,那么在调用函数时必须传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参
  • 形参就是形式上的参数,只是定义好了的,调用的时候需要进行参数传递,用实参进行传递
  • 任意类型的数据(包括列表、字典、字符串、元组等)都是可以通过函数传递的

2. 函数的传递方式

  • 默认参数: 定义形参时,可以为形参指定默认值。指定了默认值以后,如果用户传递了参数则默认值不会生效。如果用户没有传递,则默认值就会生效
  • 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
  • 关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,而根据参数名进行传递
  • 混合使用位置参数和关键字参数的时候必须将位置参数写到关键字参数前面去
    python笔记 函数,参数,形参和实参,参数的传递
    python笔记 函数,参数,形参和实参,参数的传递

3. 不定长参数

  • 带 * 的形参:
    1.定义函数时,可以在形参前面加一个 * ,这样这个形参可以获取到所有的实参,它会将所有的实参保存到一个元组中。* 形参只能接受位置参数,不能接受关键字参数
    2.带 * 号的形参只能有一个,可以和其他参数配合使用
    3.习惯上用*args来表示
  • 带 ** 的形参:
    1.** 形参可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
    2.** 形参只有一个,并且必须写在所有参数的后面
    3.习惯上用**kwargs来表示
  • *和**都只能存在一个,但是两种可以同时使用。
  • 参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错。

4. 参数的解包

• 传递实参时,也可以在序列类型的参数前添加星号,这样它会自动的将序列中元素依次作为参数传递
• 要求序列中的元素的个数必须和形参的个数一致

8.3 作业

  1. 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
    • 控制姓名长度为6-20
    • 电话号码长度11
    • 性别只能允许输入男或女
    • 每一样信息不允许为空
defcard():whileTrue:                                  
        name=input('请输入你的名字:')if6<len(name)<20:breakelse:print('名字太长或太短,重新输入')whileTrue:                                  
        telephone=input('请输入电话号码:')iflen(telephone)==11:if telephone.isdigit():# isdigit判断字breakelse:print('手机号码由数字组成')continueelse:print('请输入正确的手机号码')continuewhileTrue:                                  
        gender=input('请输入你的性别')if gender=='男'or gender=='女':breakelse:print('难道你从泰国回来啦?')continuereturn name, telephone, gender               
                                                 
                                                 
r= card()print(r)
  1. 使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21…即: 起始两项均为1,此后的项分别为前两项之和
deffun(n):                            
    a= b=1                          
    list1=[1,1,2]for iinrange(n):if i==0:                     
            list1.append(a)if i>0:                      
            a, b= b, b+ a            
            list1.append(a)
  1. 编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果
defm(a,b):
	m=0for iinrange(a,b+1):
		m= m+ iprint(m)
m(1,100)
  • 作者:shuai柯西
  • 原文链接:https://blog.csdn.net/shuaikx/article/details/113574498
    更新时间:2022年7月31日10:15:35 ,共 1765 字。