Python之函数——基础篇

函数

函数,在BASIC中,叫subroutine(子过程或子程序),在Pascal中叫作procedure(过程)和function,在C中只有function,在Java中叫method。html

定义:函数是指将一组语句的集合经过一个名字(函数名)封装起来,要执行这个函数,只需调用其函数名便可。函数

定义一个不带参数的函数:ui

def sayhi():
  print('hello')
sayhi()

定义一个带参数的函数:spa

def sayhi(name):
    print('hello', name)
sayhi('Jack')

 

函数参数

形参:在函数定义时接收code

默认参数:函数定义时即默认给参数赋值,调用时能够不须要额外赋值,位置应在位置参数以后。(有关默认参数陷阱,请见:函数的默认参数陷阱htm

关键参数:指定参数名,即成为关键参数,可是关键参数必须放在位置参数以后。blog

非固定参数(动态参数):ip

(1)动态位置参数:参数前加*号,传递的参数就能够再也不是固定的个数,传过来的全部参数打包成元组。(形参能够是*args,也能够是*[列表]的形式)内存

(2)动态关键字参数:形式参数前加**号,传递的能够是未定义的关键字参数,以字典的key-value保存。作用域

形参排列顺序:位置参数、动态位置参数(*args)、默认参数、动态默认参数(**kwargs) 

--若是想将一整个字典传入kwargs,则应在实参前也加上**号。

实参:在函数调用时传值

按照位置传值:现有一个列表(元组)args,使用*args传入能够将args拆分后传入函数,直接使用args传则会在函数中获得(args,)

按照关键字传值:现有一个字典kwargs,使用**kwargs传入能够将kwargs拆分后传入函数(且此处的键必须为字符串类型),直接使用kwargs传会报错。

函数参数总结:

 

函数返回值

函数的外部代码想要获取函数的执行结果,就能够用函数的return语句把结果返回。

注: 1.函数执行过程当中,遇return即中止执行并返回结果,能够理解为return语句表明函数的结束。

        2.若是未在函数中指定return,则返回值为None。

   3.函数永远只能返回一个值,当有多个值时会打包成元组返回。

 

局部变量与全局变量

全局变量:定义在函数外部一级代码的变量,在全局都能用

局部变量:定义在函数里的变量,只能在局部生效

在函数内部,能够引用全局变量,但不能修改(global后则能够修改)。若是全局和局部都有一个同名,函数查找顺序是由内而外的。

 

做用域

在Python中,一个函数就是一个做用域(和JavaScript相似); C#、Java中做用域为{ }

局部变量放置在其做用域中,代码定义完成后,做用域已经生成,做用域链向上查找。验证以下:

1 age = 18  # 全局做用域
2 def show_age():
3     new_age = 19  # 外层函数局部做用域
4     def inner():
5         print(age)
6         print(new_age)
7 show_age()

打印结果:

内层函数用到了外层函数以及全局的做用域的变量,但变量在此只能引用不能改变,不然会报错。

 

命名空间

命名空间也称名称空间,是存放变量名字的地方。举例说明,x=1,1存放在内存中,x变量名存在哪里呢?x自己也存在内存中。

名称空间正是存放名字x与1绑定关系的地方,它不只存x名,也存了绑定关系。

名称空间共3种:

1.locals:函数内的名称空间,包括局部变量和形参。

2.globals:全局变量,程序全部的变量及绑定关系。

3.builtins:内置模块的名称空间

相关文章
相关标签/搜索