python3 函数 随笔

函数的作用:

1.减少重复代码

2.方便修改,易扩展

3.代码保持一致性

把重复的语句通过一个名字一定的格式封装,方便日后调用。

函数定义格式:

define- > def函数定义的关键字

def  name(arguments):

        *****

函数名字的定义时具有一定的实际意义,具有描述性的文字,能大概看懂这个函数是做什么的。命名和变量规则一样,不能是保留字,函数名字区分大小写。

>>> def f():   #定义函数f()
...     print("ok")
...
>>> f() #调用函数f()

ok

===========

>>> def add(x,y):  #定义函数add(),带有形参,形参用来接收实参,参数与形参一一对应
...     print(x+y)
...
>>> add(3,4)  #调用函数add(),传入参数3,4 执行

7


必需参数

传入的参数必须一一对应

>>> def info(name,age):
...     print("name:%s"%name)
...     print("age:%s"%age)
...
>>> info("Lilei",26)  #必须一一对应函数中的形参顺序输入
name:Lilei
age:26

关键字参数

在调用函数时,在括号中通过指定变量赋值参数

>>> def info(name,age):
...     print("name:%s"%name)
...     print("age:%s"%age)
...

>>> info(age=26,name="Lilei") #关键字赋值
name:Lilei
age:26

默认参数

non-default argument follows default argument

>>> def info(name,age,sex='male'):  #默认参数在定义时要跟在非默认参数后面
...     print("Name:%s\tage:%s\tsex:%s"%(name,age,sex))
...
>>> info('Lilei',27)  #使用默认sex参数

Name:Lilei      age:27  sex:male

>>> info('Hanmei',24,sex='Female')  #赋值sex,不使用默认参数

Name:Hanmei     age:24  sex:Female

不定长参数

>>> def add(*agrs): #使用*的方式定义,可以输入多个参数通过元组的方式传入 声明时不用命名 (无命名参数)
...     print(agrs)
...     add_sum =0
...     for i in agrs:
...             add_sum = add_sum + i
...     print(add_sum)
...
>>> add(1,2,3,4,5,6,7)
(1, 2, 3, 4, 5, 6, 7)  #元组
28
>>> add(1,2,3)
(1, 2, 3)

6

=============

>>> a = [1,2,3]

>>> def f (*agrs):
...     print(agrs)
...
>>> f(*a)  #传入一个列表作为参数

(1, 2, 3)

===========

>>> def info(**kwagrs):  #以字典方式接收
...     print(kwagrs,type(kwagrs))
...     for i in kwagrs:
...             print('%s:%s'%(i,kwagrs[i]))
...
>>> info(Name='Lilei',age=18,Job='Teacher')
{'Name': 'Lilei', 'age': 18, 'Job': 'Teacher'} <class 'dict'>

Name:Lilei
age:18

Job:Teacher

===================

>>> a = {'name':'Lilei','age':23,'sex':'male'}
>>> def f(**kwagrs):
...     print(kwagrs)
...
>>> f(**a) #字典作为参数进行传参

{'name': 'Lilei', 'age': 23, 'sex': 'male'}

====================

传参为两种不定长参数位置

*agrs 放在**kwagrs之前,也就是无命名的参数放在有命名参数之前

>>> def info(**kwagrs,*agrs): #错误
  File "<stdin>", line 1
    def info(**kwagrs,*agrs):
                      ^

SyntaxError: invalid syntax

>>> def info(*agrs,**kwagrs):  #正确

...


函数的返回值  

return   返回的可以时一个值也可以时多个值,没有return时默认返回none

>>> def function():
...     return 1, 2,3,'go'
...
>>> c = function()
>>> print(c)

(1, 2, 3, 'go')  #返回的多个值以元组形式呈现


函数的作用域:

1.变量的查找顺序:local->enclosing->global->built-in,  局部作用域->外层作用域->当前模块中的全局->python内置作用域

2.只有模块,类,及函数才能引入新的作用域

3.对于一个变量,作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量;

4.内部作用域要修改外部作用域变量的值时,全局变量要用global关键字,嵌套作用域变量要 使用nonlocal的关键字。nonlocal时python3新增关键字,有这个关键字,就能完美的实现闭包。





函数内部使用global关键字进行修改count变量后,count值变化如下运行结果




同理 nonlocal关键字也类似。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值