python基础之函数

时间:2021-05-11 18:37:30

函数的定义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能得代码段。

定义一个函数:

1,函数代码块以def关键词开头,后接函数标识符名称和圆括号()

2,任何传入参数和自变量必须放在圆括号中间,圆括号之间用于定义参数

3,函数的第一行语句可以选择性的使用文档字符串-用于存放函数说明

4,函数内容以冒号起始,并且缩进

5,return结束函数,选择性地返回一个值给调用方,不带表达式的return相当返回 None

def printme( str ): "打印传入的字符串到标准显示设备上" print str return 

函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数和代码块结构,这个函数的节本结构完成以后,可以通过另一个函数调用执行,也可以直接从python提示符执行。

参数

可变参数

在python函数中,还可以定义可变参数,参数可以是任意个

def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum

 关键字参数

可变参数允许你传入0个或者任意个参数,这些可变参数在函数调用时自动组装为一个tuple,而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

def person(name, age, **kw): print 'name:', name, 'age:', age, 'other:', kw 

函数person除了必选参数nameage外,还接受关键字参数kw。在调用该函数时,可以只传入必选

参数组合

 在python中定义函数,可以用必选参数,默认参数,可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数,默认参数,可变参数和关键字参数

总结:

1,python的函数具有非常灵活的参形态,既可以实现简单的调用,又可以传入非常复杂的参数

2,默认参数一定要用于不可变对象,如果是可变对象,运行会有逻辑错误

3,要注意定义可变参数和关键字参数的语法:

     *args是可变参数,args接收的是一个tuple;

     **kw是关键词参数,kw接收的是dicr,

4,函数如何传入可变参数和关键字参数的语法:

   可变参数既可以直接传入:func(1,2,3),又可以先组装list或者tuple,再通过*args传入func(*(1,2,3))

   关键字参数既可以直接传入:func(a=1,b=2),又可以先组装dict,再通过**kw传入:func(**{'a':1,'b':2})

作用域:作用范围

全局作用域:内置名称空间与全局名称空间的名字属于全局范围,

在整个文件的任意位置都能被引用,全局有效。

局部作用域:函数调用时

 

闭包函数:函数内部定义的函数,成为内部函数,该内部函数包含对外部

作用域,而不是对全局作用域名字的,那么该函数成为闭包函数。

函数的返回值

 1,指定返回值与隐含返回值

    函数体中return语句有指定的返回值时,返回的就是其值

  函数体中没有retrun语句时,函数运行结束会隐含返回一个none作为返回值类型是 NoneType,与 return 、return None 等效,都是返回 None。

2 return 语句位置与多条 return 语句

 

    函数中使用return语句返回‘返回值’,可以将其赋给其他变量作其他用处

   所有函数的返回值,如果没有return语句,会隐式地调用return None作为返回值

   一个函数可以存在多条return语句,但只有一条可以被执行,如果没有一条return语句被执行,同样会隐式调用 return None 作为返回值

   如果有必要,可以显示调用return None明确返回一个None(空值对象)作为返回值,可以简写为 return,不过 python 中懒惰即美德,所以一般能不写就不写

   如果函数执行了 return 语句,函数会立刻返回,结束调用,return 之后的其它语句都不会被执行了

3,返回值类型

      无论定义的是返回什么类型,return只能返回单值,但值可以存在多个元素

      return[1,3,5]是至返回一个列表,是一个列表对象1,3,5分别是这个列表的元素

     return1,3,5看是返回多个值,隐式的被python封装成了一个元组返回