四.Python函数基础(上)

1.函数基础

概念:
函数是具有某一功能的代码块,针对某一个功能的代码块多次出现,为了提高编程效率,将这个代码块组织为一个模块,这就是函数
语法:

def 函数名(参数):
	...(代码块)
# 调用
函数名(参数)

例:

def a():
    print("hello")
a()
# 结果为打印hello.需要再次调用时,直接a()即可调用

注: 编写函数时,代码块需要换行缩进

2.函数参数

参数是为了给函数提供数据,给函数实现某项特定的功能所提供的一个值

形参和实参:

  • 一.必选参数

形参:只是意义上有的参数,实际并不占有内存地址
实参:实际存在的参数,占有内存地址
例:

def a(b,c):
    num=b+c
    print(num)
a(10,20)
# 结果为打印30.此处b和c就是形参,为调用时传递进来的实参占位,10和20就是实参.

Python中函数参数是引用传递(注意不是值传递).对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量.

必选参数:

def a(b,c):
    num=b+c
    print(num)
a()
# 如果程序这样执行会有报错,因为给定了必选参数,却没传递实参
  • 二.缺省参数(默认参数)

缺省参数,在调用函数时如果没有传参数,
那么会使用定义函数时给的缺省值.
缺省参数必须在参数列表的最后面,否则会报错
例:

def a(b=10,c=20):
    print("{}".format(b*c))
    pass
a()
# 结果为打印200

缺省参数同样可以传递实参,只是在没有传递实参的情况下会使用缺省参数
例:

def a(b=10,c=20):
    print("{}".format(b*c))
    pass
a(20)
# 结果为打印400
  • 三.不定长参数

一个函数有时候会处理比当初声明的参数要多,这就是不定长参数,定义函数时不用声明参数名.加了星号(*)的变量args会存放所有未命名的变量参数,args为元组;而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
不定长参数:
例:

def a(*args):
    c=0
    for b in args:
        c+=b
    print(c)
a(1,2,3,4,5)
# 结果为15,利用for循环取出所有值后相加,得出累加值.
  • 4.关键字可变参数:
    有两种方法可以传递
    例1: (直接传递)
def a(**kwargs):
    print(kwargs)
    pass
a(Name="xiaoli",Age=15)
# 结果为打印{'Name': 'xiaoli', 'Age': 15}

例2: (通过赋值的字典传递)

def a(**kwargs):
    print(kwargs)
    pass
b={"Name":"xiaoli","Age":15}
a(**b)
# 结果为打印{'Name': 'xiaoli', 'Age': 15}.两者结果一致.

两者组合使用
例:

def a(*args,**kwargs):
    print(args)
    print(kwargs)
    pass
a(1,2,3,Name="xiaoli",age=15)
# 结果为分行打印(1, 2, 3)和{'Name': 'xiaoli', 'age': 15}

3.函数返回值

概念:
函数执行完后会返回一个对象,在函数内部若有return就有实际返回的值,无则返回None.
可以返回任意类型,返回值类型取决于return后面的类型.在一个函数体中可以有多个return,但是最后只能返回一个return.如果在一个函数体内执行了return,意味着函数已经执行完成退出了,return之后的代码不会继续执行.
使用方法:

def 函数名(参数):
	...(代码块)
	return ...

例:

def a(b,c):
    d=b+c
    print(d)
    return 10
print(a(5,15))
# 结果为分行打印20和10.20是d的值,10是函数返回的值.
4.函数嵌套调用

函数可以嵌套调用,即在一个函数内部调用另外一个函数.
内层函数可以访问外层函数中定义的变量,但不能重新赋值(rebind)
使用方法:

def 函数名(参数):
	...(代码块)
	函数名(参数)

例:

def a():
    print(1)
def b():
    print(2)
    a()
b()
# 结果为分行打印2和1
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值