码迷,mamicode.com
首页 > 编程语言 > 详细

python之函数

时间:2017-07-10 00:34:22      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:*args   理解   lob   语法   技术分享   全局变量   结束   logs   方式   

一,函数是什么?

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

特性:

1.减少代码的重复性

2.代码的可扩展性

3.代码的易维护性

语法定义

def sayHello():

  print(‘hello,i‘m good boy)

sayHello()

也可直接传入参数

def add(x,y):

  res = x+y

  return res

result = add(3,5)

print(result)

二,函数参数

形参变量只有在调用时才会被分配内存单元,调用结束时就释放内存,也就是说,形参变量不调用时是不会占用任何内存的。因此,形参只能在函数内部有效。

实参可以是常量,变量,表达式,函数等,但是在函数调用时,它必须有确定的值以便传给形参。

函数传递的四种方式

1.位置传递

技术分享
def info(name,age,sex):

    return 有一位新人名字叫%s,今年%s,性别%s%(name,age,sex)

print(info(mingo,23,))
View Code

按照位置一一对应进去,多个或少一个实参都会报错

2.关键字传递

技术分享
def info(name,age,sex):

    return 有一位新人名字叫%s,今年%s,性别%s%(name,age,sex)

print(info(name=mingo,sex=,age=23))
View Code

关键字传递无顺序,只要你的名字对了就行,但要注意一点的就是,关键字参数不能出现在位置参数的前面

例如:

技术分享
def info(name,age,sex):

    return 有一位新人名字叫%s,今年%s,性别%s%(name,age,sex)

print(info(name=mingo,sex=,23))
View Code

3.默认传递

技术分享
def info(name,age,sex=):

    return 有一位新人名字叫%s,今年%s,性别%s%(name,age,sex)

print(info(name=mingo,age=23))#sex不写默认女
print(info(name=mingo,sex=,age=23))#sex写会覆盖默认的值
View Code

4包裹传递(不确定用户想传入多少个参数时使用)

技术分享
def info(*args):
    print(args)
    print(type(args))
info(1,2,4,a,mingo,21,nan)

打印结果
(1, 2, 4, a, mingo, 21, nan)
<class tuple>
View Code

args会收集传递进去的参数并变成元组的形式,args只是一个规范的名称,可以改其它名称,例如*aa

技术分享
def info(**kwargs):
    print(kwargs)
    print(type(kwargs))
info(name=mingo,age=21,sex=nan)

打印结果
{name: mingo, age: 21, sex: nan}
<class dict>
View Code

kwargs会接受key-value形式的参数并变成字典的形式

技术分享
def info(*args,**kwargs):
    print(args)
    print(kwargs)
info(1,2,name=mingo,age=21,sex=nan)

打印结果
(1, 2)
{name: mingo, age: 21, sex: nan}
View Code

以上多种形式可以配合着使用,如果有机会看到的小伙伴还是自己多动手试一试吧,我就不贴出代码了

三,局部变量

技术分享
name = "Mingo"
def change_name(name):
    print("before change:", name)
    name = "明哥,一个买不起房的男人"
    print("after change", name)


change_name(name)

print("在外面看看name改了么?", name)

打印结果
before change: Mingo
after change 明哥,一个买不起房的男人
在外面看看name改了么? Mingo
View Code

全局与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
 
要想修改全局变量只能在内部调用global,改全局变量有待商榷,不敢肆意为之。
 
四,返回值
相信很多人对return产生了疑问?

要想获取函数的执行结果,就可以用return语句把结果返回

注意:

  1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
  2. 如果未在函数中指定return,那这个函数的返回值为None 

所以,有什么卵用呢?看你的需求了。

python之函数

标签:*args   理解   lob   语法   技术分享   全局变量   结束   logs   方式   

原文地址:http://www.cnblogs.com/mingo724/p/7143730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!