zoukankan      html  css  js  c++  java
  • 函数初识


    函数
    #1.函数的定义 def
    #2.函数的调用
    #3.函数的返回值 return
    #4.函数的参数
    #形参:
    # 位置参数 : 必须传
    # *args :可以接收任意多个位置参数
    # 默认参数 : 可以不传
    # **kwargs : 可以接收多个关键字参数
    #实参:按照位置传参,按照关键字传参

    #函数
    #内置函数
    #自定义函数 !!!!


    函数返回值
    #返回值的3种情况
    # 没有返回值 —— 返回None
    # 不写return
    # 只写return:结束一个函数的继续
    # return None —— 不常用
    # 返回1个值
    # 可以返回任何数据类型
    # 只要返回就可以接收到
    # 如果在一个程序中有多个return,那么只执行第一个
    # 返回多个值
    # 用多个变量接收:有多少返回值就用多少变量接收
    # 用一个变量接收: 得到的是一个元组


    函数参数
    #形参和实参的概念
    
    
    # def my_len(s):  #s--接收参数,形式参数,形参
    #     i = 0
    #     for k in s:
    #         i += 1
    #     return i  #返回值
    #
    # ret = my_len('金老板小护士')  #传递参数:传参,实际参数,实参
    # ret = my_len([1,2,3,4,5])  #传递参数:传参
    # print(ret)
    #参数个数问题
    #没有参数
    #定义函数和调用函数时括号里都不写内容
    #有一个参数
    #传什么就是什么
    #有多个参数
    #位置参数,默认参数
    # def my_sum(a,b):
    #     print(a,b)
    #     res = a+b  #result
    #     return res
    #
    # ret = my_sum(1,2)
    # print(ret)

    函数形参和实参

    #站在实参的角度上:
    #按照位置传参
    #按照关键字传参
    #混着用可以:但是 必须先按照位置传参,再按照关键字传参数
    # 不能给同一个变量传多个值

    #站在形参的角度上
    #位置参数:必须传,且有几个参数就传几个值
    #默认参数: 可以不传,如果不传就是用默认的参数,如果传了就用传的
    # def classmate(name,sex='男'):
    #     print('%s : %s'%(name,sex))
    #
    # classmate('二哥')
    # classmate('小孟')
    # classmate('大猛')
    # classmate('朗哥','女')

    参数规则

    #调用函数的时候
    #按照位置传 : 直接写参数的值
    #按照关键字: 关键字 = 值

    #定义函数的时候:
    #位置参数 : 直接定义参数
    #默认参数,关键字参数 :参数名 = '默认的值'
    #动态参数 : 可以接受任意多个参数
    #参数名之前加*,习惯参数名args,
    #参数名之前加**,习惯参数名kwargs
    #顺序:位置参数,*args,默认参数,**kwargs
    # def classmate(name,sex):
    #     print('%s : %s'%(name,sex))
    #
    # classmate('二哥','男')
    # classmate(sex='男',name = '二哥')
    
    # def classmate(name,sex='男'):
    #     print('%s : %s'%(name,sex))
    #
    # classmate('二哥')
    # classmate('朗哥',sex= '女')
    
    # def sum(*args):
    #     n = 0
    #     for i in args:
    #         n+=i
    #     return n
    #
    # print(sum(1,2))
    # print(sum(1,2,3))
    # print(sum(1,2,3,4))
    
    # def func(**kwargs):
    #     print(kwargs)
    #
    # func(a = 1,b = 2,c =3)
    # func(a = 1,b = 2)
    # func(a = 1)

    注:动态参数

    # 动态参数有两种:可以接受任意个参数
    #*args : 接收的是按照位置传参的值,组织成一个元组
    #**kwargs: 接受的是按照关键字传参的值,组织成一个字典
    #args必须在kwargs之前
    # def func(*args,default = 1,**kwargs):
    #     print(args,kwargs)
    #
    # func(1,2,3,4,5,default=2,a = 'aaaa',b = 'bbbb',)

    划重点!!!

    形参中参数种类的相对顺序不可变!!!

    位置参数-->*args-->默认参数-->*kwargs   !!!

    #动态参数的另一种传参方式

    1、向*args中传列表

    2、向*kwargs中传字典

    方法:调用函数时在实参的序列前加*或**

    # def func(*args):#站在形参的角度上,给变量加上*,就是组合所有传来的值。
    #     print(args)
    #
    # func(1,2,3,4,5)
    # l = [1,2,3,4,5]
    # func(*l)  #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散
    
    # def func(**kwargs):
    #     print(kwargs)
    #
    # func(a=1,b=2)
    # d = {'a':1,'b':2} 
    # func(**d)

    #函数的注释

    #函数的注释
    # def func():
    #     '''
    #     这个函数实现了什么功能
    #     参数1:
    #     参数2:
    #     :return: 是字符串或者列表的长度
    #     '''
    #     pass
  • 相关阅读:
    【luogu3768】简单的数学题【杜教筛】【欧拉函数】
    【bzoj3589】动态树【树链剖分】【线段树】
    【bzoj4386】[POI2015]Wycieczki【矩阵快速幂】【倍增】
    【bzoj2186】[Sdoi2008]沙拉公主的困惑 【线性筛】【容斥原理】
    【bzoj3884】上帝与集合的正确用法 【欧拉函数】
    【bzoj4417】[Shoi2013]超级跳马 【矩阵快速幂】
    【bzoj3435】【uoj#55】[WC2014]紫荆花之恋 【动态树分治】【平衡树】
    【bzoj3681】Arietta 【网络流】【主席树】【启发式合并】
    【bzoj1532】[POI2005]Kos-Dicing 【网络流】【二分】
    【bzoj1565】[NOI2009]植物大战僵尸 【网络流】【最大权闭合子图】
  • 原文地址:https://www.cnblogs.com/aj-AJ/p/10807782.html
Copyright © 2011-2022 走看看