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

Python tutorial阅读之函数的定义与使用

时间:2018-02-14 15:59:48      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:dead   append   全局变量   参数传递   add   变量   glob   修改   cti   

函数的定义

Python 使用关键字def定义函数,格式与C语言类似,但是没有返回类型,参数也不需要设置类型。

def add(a, b):
    """这是函数的文档字符串"""
    return a + b

def append(data):
    data.append(a) #如果data为可变对象时候,例如List、Dict,则会改变实参的值
    

函数调用 会为函数局部变量生成一个新的符号表。确切的说,所有函数中的变量赋值都是将值存储在局部符号表。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管他们可以被引用。

Python参数传递采用的肯定是“传对象引用”的方式。这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值‘来传递对象。

技术分享图片
技术分享图片

参数

默认参数: 为参数设定默认值,调用函数时,如果没有值即使用默认值。

def login(username,password = "123"):
    """登录函数"""
    pass

login("admin")
login("admin","password")

def f(a, L=[]):
    L.append(a)
    return L

print(f(1))
print(f(2))
print(f(3))
# 输出结果
[1]
[1, 2]
[1, 2, 3]

>>> def f(x = []):
...     x.append(1)
...     print(id(x))
... 
>>> f()
140693834878408
>>> f()
140693834878408
>>> f()
140693834878408
>>> 

关键字参数调用:即指定形式key = value来调用函数,关键字参数应该在位置参数后面。

def parrot(voltage, state=‘a stiff‘, action=‘voom‘, type=‘Norwegian Blue‘):
    print("-- This parrot wouldn‘t", action, end=‘ ‘)
    print("if you put", voltage, "volts through it.")
    print("-- Lovely plumage, the", type)
    print("-- It‘s", state, "!")

# 以下调用均是错误的
parrot()                     # 必须参数没有
parrot(voltage=5.0, ‘dead‘)  # 关键字参数必须在位置参数之后
parrot(110, voltage=220)     # **任何参数都不可以多次赋值**
parrot(actor=‘John Cleese‘)  # 不存在该参数名

Python tutorial阅读之函数的定义与使用

标签:dead   append   全局变量   参数传递   add   变量   glob   修改   cti   

原文地址:https://www.cnblogs.com/xmxj0707/p/8448404.html

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