Python入门学习笔记————05(函数)

关键字参数

  • 语法

      def func_key(p1=v1,p2=v2,p3=v3,...):
          func_body
    
      调用函数:
      func_key(p1=value1,p2=value2,...)
    

    比较麻烦但有好处:

      - 不容易混淆,一般参数需要形参与实参一一对应
      - 关键字参数可以不考虑关键字位置
    

In [3]:

#关键字参数例子
def student (name,age,addr):
    print ('我是一名学生')
    print ('我叫{0},今年{1},住在{2}'.format (name,age,addr))
 
#调用
n = 'xiaoming'
a = 18
addr = '我家'
student (age=a,name=n,addr=addr)  #注意,关键字参数时,位置可以颠倒
我是一名学生
我叫xiaoming,今年18,住在我家

收集参数

  • 把没有位置、不能和定义时参数位置相对应,的参数放入一个特定的数据结构中
  • 语法

      def func (*args):
          func_body
    
      #调用
      func (p1,p2,p3,....)
    
   ##定义收集参数时通常使用*args

In [11]:

#收集参数代码
def student (*args):
    print ('hello,大家好')
    print (type(args))   #type函数作用:检测变量类型
    for i in args:    #在访问列表时,常使用for循环
        print (i)
#调用
student ('lingling',18,'tongxian')
student ('xiaoming')
hello,大家好
<class 'tuple'>
lingling
18
tongxian
hello,大家好
<class 'tuple'>
xiaoming

收集参数之关键字收集参数

  • 把关键字参数按字典格式存入收集参数
  • 语法:

          def func(**kwargs):
              funcc_body
    
          #调用
          func(p1=v1,p2=v2,....)
    
     - kwargs一般约定俗成
     - 调用时把多余的关键字放入kwargs
     - 访问kwargs需要按字典格式访问
    

In [34]:

##收集参数实例
def stu( **kwargs):   #注意定义格式
    print('hello,大家好')
    print (type(kwargs))
    for k,v in kwargs.items():   #查看字典
        print(k,'---',v)        
stu(name='狗蛋',age=16,favorite='sing',work='teacher')
print('*'*20)     #打印20次*
stu (name='xiaoming')
hello,大家好
<class 'dict'>
name --- 狗蛋
age --- 16
favorite --- sing
work --- teacher
********************
hello,大家好
<class 'dict'>
name --- xiaoming

收集参数混合调用的顺序问题

  • 收集参数,关键字参数,普通参数可以混合使用
  • 普通参数与关键字参数优先

In [83]:

扫描二维码关注公众号,回复: 4690452 查看本文章
 
#混合案例
def stu(name,age, *args,hobby='no', **kewargs):
    print ('我叫{0},今年{1}'.format(name,age))
    if hobby == 'no':
        print('我没有爱好')
    else:
        print('我的爱好是{0}'.format(hobby))
    print ('^'*20)
    for i in args:
        print(i)
    print ('*'*20)
    for k,v in kewargs.items():
        print(k,'---',v)
name='goudan'
age=15
#不同形式的调用
stu(name,age)
stu(name,age,hobby='movie')
stu(name,age,'xiaoming','lili',hobby='PE',hobby2='shuijiao')
 
我叫goudan,今年15
我没有爱好
^^^^^^^^^^^^^^^^^^^^
********************
我叫goudan,今年15
我的爱好是movie
^^^^^^^^^^^^^^^^^^^^
********************
我叫goudan,今年15
我的爱好是PE
^^^^^^^^^^^^^^^^^^^^
xiaoming
lili
********************
hobby2 --- shuijiao

收集参数的解包问题

  • 把参数放入list或者字典中,直接把list或者字典中的值放入收集参数中
  • 语法看案例

In [90]:

#案例
def stu(*args):
    print ('哈哈哈哈哈')
    n = 0   #n用来表示循环次数,主要用来调试
    for i in args:
        print (type(i))
        print (n)
        n += 1
        print(i)        
 
#调用
l = ['lili',18,23,'kkkkkk']
stu (l)
#此时args表示字典内的一个list元素
#如果要作为多个元素进行调用则加*号(对list进行解包)
#对字典进行解包时需要加**(两个)
stu(*l)
哈哈哈哈哈
<class 'list'>
0
['lili', 18, 23, 'kkkkkk']
哈哈哈哈哈
<class 'str'>
0
lili
<class 'int'>
1
18
<class 'int'>
2
23
<class 'str'>
3
kkkkkk

返回值

  • 函数和过程的区别
    • 有无返回值
  • 下需要用return显示返回内容
  • 如果有返回值则返回,如果没有则返回None
  • 推荐在有没有返回值时都以return结束

函数文档

  • 函数的文档的作用是对当前函数提供使用相关的参考信息
  • 文档的写法
    • 在函数开始的第一行使用三引号字符串定义符
    • 一般具有特定格式 -参考案例
  • 文档查看
    • 使用help函数,形如 help(func)
    • 使用doc

In [*]:

#返回值实例 
def func_1():
    print('我有返回值')
    return 1
def func_2():
    print('我没有返回值')
 
f1 = func_1()
print(f1)
f2 = func_2()
print(f2)

In [*]:

#案例
def stu(name,age,*args):
    '''这是文档'''
    print('hello')
#查看文档
help(stu)
stu._doc_

猜你喜欢

转载自blog.csdn.net/weixin_42492218/article/details/84892419