美文网首页
Python 3 笔记 - 第8章 函数

Python 3 笔记 - 第8章 函数

作者: 小叶与小茶 | 来源:发表于2018-06-22 12:09 被阅读6次

1. 函数定义

Python 函数定义格式为:

def 函数名(参数列表) :
    函数体

2. 参数传递

之前在学习 C 或 Java 时,一个绕来绕去的知识点就是关于函数入参,传递的究竟是数值,还是对象引用。在 Python 中,其实也有这个概念,只不过可以换一种表达方式:

可更改对象 (mutable) && 不可更改对象 (immutable)

数值类型(number)、字符串类型(string)和元组类型(tuple)都是不可更改的对象;列表类型(list)和字典类型(dictionary)则是可更改的对象。

  • 比如对于数值类型的变量
a = 1
a = 2

这个过程本质上是先生成一个数值对象1,将 a 指向该对象,然后再生成一个数值对象2,让 a 重新指向该对象,原来那个数值对象1也不再使用了,因此这个过程并不是改变了 a。

  • 比如对于列表类型的变量
list = [1,2,3,4,5]
list[2] = 10

这个过程本质上是改变了 list 所代表的列表对象内部的值

写一个简单的例子:

# 这个函数的入参是不可变对象--数值
def change_number(x) :
    x = 100

# 这个函数的入参是可变对象--列表
def change_list(list) :
    list.append(12345)

# 主程序
x = 1
print('Before invoke change_number x =', x)
change_number(x)
print('After invoke change_number x =', x)

list = [1,2,3]
print('Before invoke change_list list =', list)
change_list(list)
print('After invoke change_list list =', list)

执行结果为:

Before invoke change_number x = 1
After invoke change_number x = 1
Before invoke change_list list = [1, 2, 3]
After invoke change_list list = [1, 2, 3, 12345]

3. 传递参数的表达方法

有四种传递参数的表达方法:

  • 必需参数
  • 关键字参数
  • 默认参数
  • 不定长参数

1) 必须参数

必需参数指的是必须以正确的顺序传入函数,参数个数必须和声明时的一样,否则会出现运行错误。这是最常见的方式,不再赘述。

2) 关键字参数

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值

def user(name, age) :
    print('name :', name)
    print('age : ', age)

print('入参顺序和函数声明一致')
user(name = 'andy', age = 35)

print('入参顺序和函数声明不一致')
user(age = 35, name = 'andy')

执行结果为

入参顺序和函数声明一致
name : andy
age :  35

入参顺序和函数声明不一致
name : andy
age :  35

3) 默认参数

调用函数时,如果没有传递参数,则会使用默认参数

def user(name = '无名氏', age = 100) :
    print('name :', name)
    print('age : ', age)

print('两个参数都显示设定')
user(name = 'andy', age = 35)

print('只显示设定名字')
user(name = 'andy')

print('只显示设定年龄')
user(age = 35)

执行结果为:

两个参数都显示设定
name : andy
age :  35

只显示设定名字
name : andy
age :  100

只显示设定年龄
name : 无名氏
age :  35

4) 不定长参数

我还没写完呐……

相关文章

网友评论

      本文标题:Python 3 笔记 - 第8章 函数

      本文链接:https://www.haomeiwen.com/subject/qelkyftx.html