Python基础——函数1(简介、参数、形参、实参传递方式)

一、函数简介

  • 函数也是一个对象,对象是内存中专门用来存储数据的一块区域
  • 函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次的调用
  • 创建函数:
    def 函数名([形参1,形参2,…形参n]) :
    代码块
    • 函数名必须要满足符号标识符的规范
      (可以包含字母、数字、下划线、但是不能以数字开头)
  • 函数中保存的代码不会立即执行,需要调用函数代码才会执行
  • 调用函数:
    函数对象()
  • 定义函数一般都是要实现某种功能的

实例

# 比如有如下三行代码,这三行代码是一个完整的功能
print('Hello')
print('你好')
print('再见')

在这里插入图片描述

# 定义一个函数
def fn() :
    print('这是我的第一个函数!')
    print('hello')
    print('今天天气真不错!')

# 调用函数
fn()

在这里插入图片描述

二、函数的参数

  • 在定义函数时,可以在函数名后的()中定义数量不等的形参,多个形参之间使用,隔开
  • 形参(形式参数),定义形参就相当于在函数内部声明了变量,但是并不赋值
  • 实参(实际参数)
    • 如果函数定义时,指定了形参,那么在调用函数时也必须传递实参,实参将会赋值给对应的形参,简单来说,有几个形参就得传几个实参
# 定义函数时指定形参
def fn2(a , b) :
    # print('a =',a)
    # print('b =',b)
    print(a,"+",b,"=",a + b)

# 调用函数时,来传递实参
fn2(10,20)
fn2(123,456)

在这里插入图片描述

实例1:求任意三个数的乘积

# 求任意三个数的乘积
def mul(a,b,c):
    print(a*b*c)

# 调用函数
mul(1,2,3)  

在这里插入图片描述

实例2:根据不同的用户名显示不同的欢迎信息

# 根据不同的用户名显示不同的欢迎信息   
def welcome(username):
    print('欢迎',username,'光临')

# 调用函数
welcome('孙悟空') 

在这里插入图片描述

三、为形参指定默认值

  • 定义形参时,可以为形参指定默认值
  • 指定了默认值以后,如果用户传递了参数则默认值没有任何作用
  • 如果用户没有传递,则默认值就会生效
# 定义一个函数
def fn(a = 5 , b = 10 , c = 20):
    print('a =',a)
    print('b =',b)
    print('c =',c)

fn(1 , 2 , 3)
fn(1 , 2)
fn()

在这里插入图片描述

四、实参的传递方式(位置参数和关键字参数)

1.位置参数

  • 位置参数就是将对应位置的实参复制给对应位置的形参
  • 第一个实参赋值给第一个形参,第二个实参赋值给第二个形参 …
# 定义一个函数
def fn(a, b, c):
    print('a =',a)
    print('b =',b)
    print('c =',c)

fn(1 , 2 , 3)

在这里插入图片描述

2.关键字参数

  • 关键字参数,可以不按照形参定义的顺序去传递,而直接根据参数名去传递参数
# 定义一个函数
def fn(a, b, c):
    print('a =',a)
    print('b =',b)
    print('c =',c)

fn(b=1 , c=2 , a=3)

在这里插入图片描述

位置参数和关键字参数可以混合使用

  • 混合使用关键字和位置参数时,必须将位置参数写到前面
# 定义一个函数
def fn(a, b, c):
    print('a =',a)
    print('b =',b)
    print('c =',c)

fn(1, 2, c=30)

在这里插入图片描述

函数在调用时,解析器不会检查实参的类型,实参可以传递任意类型的对象

def fn(a, b, c):
    print('a =',a)
    print('b =',b)
    print('c =',c)

def fn2(a):
    print('a =',a)


fn2(123)
fn2(True)
fn2('hello')
fn2(None)
fn2([1,2,3]) 
fn2(fn)

在这里插入图片描述

  • 在函数中对形参进行重新赋值,不会影响其他的变量
def fn4(a):
    # 在函数中对形参进行重新赋值,不会影响其他的变量
    a = 20
    print('a =',a,id(a))

c = 10
fn4(c)
print('c =', c, id(c))

在这里插入图片描述

  • 如果形参执行的是一个对象,当我们通过形参去修改对象时,会影响到所有指向该对象的变量
def fn4(a):
    
    a[0] = 30
    # a是一个列表,尝试修改列表中的元素
    # 如果形参执行的是一个对象,当我们通过形参去修改对象时
    # 会影响到所有指向该对象的变量
    print('a =',a,id(a))

c = [1,2,3] 
fn4(c)
print('c =', c, id(c))

在这里插入图片描述

  • 如何不改变对象:采用c.copy()或c[:]
def fn4(a):
    
    a[0] = 30
    # a是一个列表,尝试修改列表中的元素
    # 如果形参执行的是一个对象,当我们通过形参去修改对象时
    # 会影响到所有指向该对象的变量
    print('a =',a,id(a))

c = [1,2,3] 
fn4(c.copy())
fn4(c[:])
print('c =', c, id(c))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值