Python基础学习(9)—函数(1)

函数(1)

1.1函数的简介(function)

1 函数也是一个对象
对象是内存中专门用来存储数据的一块区域
函数用来保存一些可以执行的代码,并且可以在需要的时候对这些语句多次调用

1.2创建函数

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

def fn(): # fn是函数对象, fn()调用函数
	 print('这是我第一个函数')
    print('abc','bcd')
    print('python')
    print('hahaha')
打印fn
print(fn)
fn()

运行结果

<function fn at 0x0000020B479B1E18>
# 函数的对象
这是我第一个函数

abc bcd
python
hahaha
#函数的内容

1.3函数的参数

1 在定义函数的时候,可以在函数名后面的括号里面定义数量不等的形参

2 多个形参我们用“,”号隔开

3 形参(形式参数)定义形参就是相当于在函数内部定义了变
量,但是并没有赋值

4 实参(实际参数)函数定义时指定了形参,那么调用函数的时候也必须传递实参

5 实参将会赋值给对应的形参,有几个形参就传几个实参

# 使用函数求两个数的和
def s():
    a = 1
    b = 2
    print(a+b)

s()

def fn2(a,b):
    print('a =',a)
    print('b =',b)
    print(a,'+',b,'=',a+b)
fn2(10,11)# 将a = 10,b = 20传给函数中的a,b形参
fn2(100,200)# 将a = 100,b = 200传给函数中的a,b形参

运行结果

3# 没有参数时

a = 10
b = 11
10 + 11 = 21

a = 100
b = 200
100 + 200 = 300

1.4 函数的传递方式

1 定义形参的时候我们可以为形参指定一个默认值
指定了默认值以后,如果用户传递了参数,默认值是不会有任何作用的,如果用户没有传递,则默认值会生效

def fn1(b,a = 1):
	print('b =',b)
	print('a = ',a)
fn1(10)
fn1(10,20)

运行结果

b =  10
a = 1
b =  10
a = 20

2 位置传参
位置传参就是将对应位置的实参传递给对应位置的形参

3 关键字传参
关键字传参可以不按照形参定义的顺序去传参,而根据参数名来传递参数

def fn1(a,b):
	print('b = ',b)
	print('a = ',a)

fn1(10,20)
fn1(b = 20,a = 10)

运行结果

b =  20
a =  10
b =  20
a =  10

4 位置传参也可以和关键字传参混合使用
混合使用的时候,必须将位置参数写到关键字参数前面

def fn1(a,b,c):
	print('a = ', a)
	print('b = ',b)
	print('c = ',c)
	
fn1(10,20,c = 30)

运行结果

a =  10
b =  20
c =  30

1.5 六 实参的类型

1 函数在调用的时候,解释权不会检查实参的类型
实参的类型可以是任意的对象

2 在函数中对形参重新复制不会影响其他的变量

3 如果形参在执行的时候,当我们通过形参去修改对象时
会影响到指向该对象的变量

def fn3(a):
    #在函数中对a重新赋值不会影响其他的变量
    a = 30
    print('a =',a)

c = 10
print(id(c))
fn3(c)
print(c,id(c))

def fn4(a):

    # 如果a在执行的时候,当我们通过形参去修改对象时,会影响到指向该对象的变量
    a[0] = 5
    print('a =',a,id(a))

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

运行结果

1809018160
a = 30
10 1809018160

a = [5, 2, 3] 2303801902408
c = [5, 2, 3] 2303801902408 # c[0]改变

1.6 不定长参数

1 在定义函数的时候,可以在形参的前面加上一个“ * ”,这样这个形参将会获取到所有的形参,它会将所有的实参保存到一个元祖中

def s(*a):

    # 定义一个变量来保存 结果
    r = 0
    # 遍历元祖,将元祖中的元素取出来并进行累加
    for n in a:
        r += n
    print(r)

s(1,2,3,4,5,6)
def fn(*a):

    print('a = ',a,type(a))

fn(2,3,4,5,6,7,8,9,90)

def fn2(a,b,*c):

    print('a =',a)
    print('b =',b)
    print('c =',c)

fn2(1,2,3,4,5,6)

运行结果

21

a =  (2, 3, 4, 5, 6, 7, 8, 9, 90) <class 'tuple'>

a = 1
b = 2
c = (3, 4, 5, 6)#将剩下的数储存到c元组中

2 可变长参数不是必须要写到最后的,但是注意 带 “ * ” 的参数后面的参数,必须以关键字的形式传参

def fn2(*a,b,c):

    print('a =',a)
    print('b =',b)
    print('c =',c)

fn2(1,2,3,4,b=5,c=6)

运行结果

a = (1, 2, 3, 4)
b = 5
c = 6

3 若果在形参的开头直接写一个*,则要求我们但是所有的参数要以关键字的形式来传递

def fn2(*,a,b,c):

    print('a =',a)
    print('b =',b)
    print('c =',c)

fn2(a=3,b=4,c=5)

运行结果

a = 3
b = 4
c = 5

4 “**”形参可以接收其他的关键字参数,它会将这些参数统一保存到一个字典当中字典当中的key是参数的名字,字典当中的value是参数的值此形参只能有一个,并且必须写在最后面(装包)

def fn3(b,c,**a):
    print('a =', a,type(a))

    print('b =',b)
    print('c =',c)

fn3(b=1,d=2,c=3,e=4,f='q')

运行结果

a = {'d': 2, 'e': 4, 'f': 'q'} <class 'dict'>
b = 1
c = 3

1.7 参数解包

def fn5(a,b,c):
    print('a =', a)
    print('b =', b)
    print('c =', c)
# 这里面要求序列中的元素的个数必须和形参的个数一致,且必须是字典

d = {'a':100,'b':200,'c':300}# 字典的键要与参数一致

fn4(**d)

运行结果

a = 100
b = 200
c = 300
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值