python 函数

目录

  函数

  函数分类

  函数语法结构

  函数名的命名规则

  函数的参数

  函数的返回值

  函数的调用

  函数对象

函数

  函数是模块性开发,用来实现某一功能的代码段,

  可重复性使用,提高代码的重复利用率,使写的代码结构清晰。

函数的分类

  内置函数: Python中自定义的函数,如:print()

  自定义函数: 根据python定义函数的语法结构自定义的函数

函数的语法结构:

def function_name(par1, par2, ...):
    function body
    return value(s)

  说明:

  def:定义函数的关键字

  function_name: 函数的名字

  par1,par2: 函数的参数

  return value(s): 函数的返回值

函数的名字名命规则

  函数的名字名命规则和变量名的命规则相同

函数的参数

  函数参数分类: 函数的参数分形参和实参

  实参:调用函数时传入的参数

  形参:形参即在定义函数时,括号内声明的参数

  函数参数的使用:

  位置参数:按照从左到右的顺序定义参数

    位置形参:必须参数(函数在调用时必须传入的参数)

    位置实参:按照位置给形参传值

  关键字参数: 按照key=value的形式定义实参,无需按照位置(从左到右的顺序)为形参传值

    注意: 关键字实参必须在位置参数的右面 

  默认参数:形参在定义时就已经为其赋值,在传递参数时可以传值也可以不传值,  变化较小的参数定义成默认参数(形参)

    注意:

      1、只在定义时赋值一次

      2、默认参数的定义应该在位置形参右面

      3、默认参数通常应该定义成不可变类型

  可变长参数: 可变长指的是实参值的个数不固定,而实参有关键字和位置参数传参的方式,在其参数个数不确定的情况下,

        可以采用可变长的参数实现。位置参数使用*args,关键字参数使用**kwargs

  *args

def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print "输出: "
   print arg1
   for var in vartuple:
      print var
   return
 
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )

  **kwargs

def printInfo(a=3, **kwargs):
    print(a)
    print(kwargs)

printInfo(a=1, b=2, c=3)

  命名关键字参数:*后定义的参数,必须被传值(有默认值得除外),且必须按照关键字实参的形式传递

函数的返回值

  一个函数体内可以有多个返回值,执行到return时会结束函数的执行。

  如果函数内没有return,则返回值为:None。

函数的调用:

  函数名加括号

  例如:

def one_func():
    print("hello world")

# 调用函数
one_func()

函数对象(函数被当成参数来调用)

1.函数名可以传递给变量名

def func():
    print('hello world')
print(func)  # <function func at 0x000001D1EF681EA0> 函数地址
a = func
print(a)  # <function func at 0x000001D1EF681EA0>
print(a,func)  # 结果是相等的,则结论函数名可被传递
a()  # hello world 调用函数

2.函数名可以被当成参数传递给其它函数

def func():
    print('hello')
print(func)  # <function func at 0x000001D85CF51EA0>

def index(args):
    print(args)  # <function func at 0x000001D85CF51EA0>
    args()
    print('world')
index(func)  # world

3.函数名可以当做函数的返回值

def func():
    print('hello')
print(func)  # <function func at 0x00000182FFB71EA0>

def index():
    print('world')
    return func
res = index()
print(res)  # <function func at 0x00000182FFB71EA0>
res()  # hello

4.函数名可以当做容器类型的参数

def func():
    print('hello')
print(func())
# 先执行代码,然后返回值,没有return则返回值为None
# hello
# None
l = [1,2,func,func()]
print(l)
# hello
# [1, 2, <function func at 0x000001F0D3EA1EA0>, None]

注意:

  1. 函数是先定义,后使用

  2. 函数在定义阶段,只检查语法,不执行代码,函数体内代码是在函数执行阶段检测

  3. 空函数,用于设计代码结构

 

posted @ 2020-03-30 09:54  zhuang6  阅读(134)  评论(0)    收藏  举报