python函数(一)

一:函数的定义

    函数(Functions)是指可重复使用的程序片段。它封装了能实现一定功能的代码块。

#python中定义一个函数的语法如下
def function_name(参数):       #函数名也是一个变量,它是一个指向函数的变量;函数本身也可以赋值给一个变量,这样该变量即成为了函数的一个别名,同样可以指向函数
    '''
    文档字符串:用来描述函数的功能

    '''
    #function code block

    函数体内部可以用 return 随时返回函数结果,但要注意的是,一旦执行到return时,函数就执行完毕,并将结果返回,return后面的语句永远不会执行!如果没有return语句,函数执行完毕后也会返回结果,此时结果为None

#定义一个空函数
def nop():
    pass     #pass语句什么都不做,pass实际上是用来作为占位符的,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。pass也可以用在其他语句里

    函数可以同时返回多个值,但其实返回值就是一个tuple

    解释器执行到函数的定义时,会有两个动作:1,检查语法,语法有错误时会报错;2,向os发出请求将该函数读入内存

二:函数的参数

    1,位置参数

    位置参数是必选参数,调用函数时,传入的值按照位置顺序依次赋给位置参数。

def my_sum(a,b):   
    s=0
    s = a + b
    return s
s1=my_sum(1,2)     #调用my_sum函数时必须传入两个值,且这两个值是按位置顺序依次赋给参数a和b的
print(s1)

    2,默认参数

def say(message,times=1):  #times=1,即设置默认参数times,其默认值为1
    print(message*times)

say('hello')    #只传一个值时,times参数取默认值1
say('hello',5)  #传两个值时,传进来的值5会覆盖默认值,此时times取值5

    设置默认参数时需注意:

    一:位置参数(必选参数)在前,默认参数在后,不能颠倒它们的顺序,因为值是按参数位置依次分配的。

    二:变化小的参数可以使用默认参数

    三:默认参数必须指向不可变对象,即默认参数值必须是不可变类型!!!

    3,可变参数

    可变参数就是传入的参数数量是可变的,可以是1个,2个到任意个,或者0个。

def calc(*args):  #在参数前面加一个 * 来定义可变参数;在函数内部,参数args接收到的是一个tuple,即传入的任意个值会汇集成一个tuple再赋值给参数args
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

    如果要传入的值是一个list或tuple或set,python允许你在list或tuple或set前面加一个 * 号,把list或tuple或set的元素变成可变参数传进去;如果传入一个str,python也允许你在str 前面加一个 * 号,把str的每个字符变成可变参数传进去;如果传入一个dict,python允许你在dict前面加一个 * 号,把dict的key变成可变参数传进去

    4,关键字参数

        关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装成一个dict再传给参数kw

        关键字参数不能在位置参数前面,即位置参数应写在关键字参数前面;可变参数接收的也是任意个位置参数,所以可变参数也应在关键字参数前面

def person(name, age, **kwargs):     #通过使用两个 * 号来定义关键字参数,kwargs参数接收到的是一个dict
    print('name:', name, 'age:', age, 'other:', kw)

    关键字参数有什么用呢?它可以扩展函数的功能!

    如果要传入的值是一个dict,python允许你在dict前面加两个 * 号,把dict的元素变成关键字参数传进去

    5,命名关键字参数

    命名关键字参数可以用来限制传入关键字参数的名字,即只能传入指定关键字参数

def person(name, age, *, city, job):   #命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数;只接收city和job作为关键字参数
    print(name, age, city, job)
# person('rock',18,hooby='read',job='coding')   #当传入其他关键字参数时会报错
person('rock',18,job='coding')        #在没有设置默认值的情况下,命名关键字参数不能省略

    注意:如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符 * 了

def person(name, age, *args, city, job):  #可变参数后面的city 和 job 是命名关键字参数,这里就不再需要一个分隔符* 了
    print(name, age, args, city, job)
def foo(*kwargs,x,y):  #因为参数x,y在可变参数后面定义,所以这里的x和y是命名关键字参数
    print(kwargs)
    print(x,y)
foo(1,2,x=3,y=4)

三:函数的调用

    要调用一个函数,需要知道函数的名称和参数。调用一个函数时,解释器会先找到该函数,然后执行该函数中的代码

mylist = [1,2,'a','b']
print(mylist)    #在这调用了print()函数,调用一个函数,1,函数名需要写对;2,传入的参数个数和参数数据类型需要满足函数要求

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值