python之函数

一,函数是什么?

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

特性:

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,‘男‘))

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

2.关键字传递

def info(name,age,sex):

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

print(info(name=‘mingo‘,sex=‘男‘,age=23))

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

例如:

def info(name,age,sex):

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

print(info(name=‘mingo‘,sex=‘男‘,23))

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写会覆盖默认的值

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‘>

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‘>

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‘}

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

三,局部变量

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

全局与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。

当全局变量与局部变量同名时:

在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

要想修改全局变量只能在内部调用global,改全局变量有待商榷,不敢肆意为之。

四,返回值

相信很多人对return产生了疑问?

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

注意:

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

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

时间: 2024-10-13 04:18:44

python之函数的相关文章

python之函数用法capitalize()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法capitalize() #capitalize() #说明:将字符串的第一个字母变成大写,其他字母变小写. ''' capitalize(...) S.capitalize() -> string Return a copy of the string S with only its first character capitalized. ''' #案例 str='xiaoden

关于python的函数的*和**参数:

1.将足够的参数解包以后传递给函数:>def f(p1, p2, p3, p4):>     print p1+p2+p3+p4>>li = [1, 2, 3, 4]>f(*li)10>>tu = (1, 2, 3, 4)>f(*tu)10>>di = {'p1':1, 'p2':2, 'p3':3, 'p4':4}>f(**di)>10 2.使用封包的方法访问多余的参数>>> def funct(*para, **

python之函数用法setdefault()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法setdefault() #D.get(k,d) #说明:k在D中,则返回 D[K],如果k不在D中,则返回d值 #D.get(k,d), also set D[k]=d if k not in D ''' >>> help(dict.setdefault) Help on built-in function setdefault: setdefault(...) D.set

python之函数用法islower()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法islower() #http://www.runoob.com/python/att-string-islower.html #islower() #说明:检测字符串是否都由小写字母组成 str = "THIS is string example....wow!!!" print str.islower()#False str = "this is string

python之函数用法xrange()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法xrange() #xrange() #说明:返回一个生成器 #xrange做循环的性能比range好,尤其是返回很大的时候.除非要返回一个列表,则用range. ''' class xrange(object) | xrange(stop) -> xrange object | xrange(start, stop[, step]) -> xrange object | | Li

python之函数用法startswith()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法startswith() #http://www.runoob.com/python/att-string-startswith.html #startswith() #说明:返回布尔值,用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False. ''' startswith(...) S.startswith(prefix[, start[, end]]

python之函数用法globals()

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法globals() #globals() #说明:在当前作用域下,查看全局变量 ''' globals(...) globals() -> dictionary Return the dictionary containing the current scope's global variables. ''' #案例 b='xiaodeng' print globals#<buil

python之函数用法__setattr__

# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法__setattr__ #http://www.cnblogs.com/hongfei/p/3858256.html #用__setattr__函数重构方法 class Fruit(): def __init__(self,color,price): self.__color = color self.__price = price def __setattr__(self,name

Python 3 函数自由变量的大坑

Python中函数是一个对象, 和整数,字符串等对象有很多相似之处,例如可以作为其他函数的参数或返回对象, Python中的函数还可以携带自由变量, 两者无疑极大增进了Python的表达力. 但是Python函数自由变量的内部机制和列表解析或for循环结合使用时却暗藏杀机: #---CASE 1 fs = map(lambda i:(lambda j: i*j),range(6)) print([f(2) for f in fs]) #---CASE 2 fs = [lambda j:i*j f

python 之 函数

def fm(): #定义一个函数fm() 这个函数的内容是以下一个脚本.     for i in range(0,6):         fr = open("qg/t.txt",'r')         #打开一人文件并读取         print (fr.readlines()[5 - i])         #显示这个文件的内容,是从最后5行显示到第1行.这个文件只有5行.         fr.close()         #关闭这个打开的文件. #定义函数fm,把t