Python 编程基础 | 第四章-函数 | 4.1、函数定义

一、函数

1、函数定义

Python中定义函数使用def关键字,函数结构如下:

def 函数名(参数):
    函数体
    return 语句

下面定义一个简单的函数,例如:

def display(param1, param2):
    print('参数1:' + param1)
    print('参数2:' + param2)

display("hello", "world")

2、传递实参

函数定义中可能包含多个形参,因此、函数调用也需要传递多个实参。向函数传递实参的方式有很多种,可以使用位置实参,这要求实参的顺序与形参的顺序相同;也可以使用关键字实参,其中每个实参都由变量名和值组成;还可以使用列表和字典

2.1、位置实参

函数调用时,必须将函数调用中每个实参都关联到函数定义中的一个形参。最简单的关联方式是基于实参的顺序,这种关联方式称为位置实参,例如:

def display(param1, param2):
    print('参数1:' + param1)
    print('参数2:' + param2)

display("hello", "world")
display("world", "hello")

上面两个函数调用,因为传参的顺序不同,有不同的输出结果

2.2、关键字实参

关键字实参是传递给函数的名称对,例如:

def display(param1, param2):
    print(param1 + " " + param2)

display(param1="hello", param2="world")  # 输出结果:hello world
display(param2="world", param1="hello")  # 输出结果:hello world

注意:使用关键字实参时,务必准确指定函数定义中的形参名

3、可更改(mutable)与不可更改(immutable)对象

strings、tuples 和 numbers 是不可更改的对象,而 list、dict 等则是可以修改的对象

变量赋值

  • 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a
  • 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了

参数传递

  • 不可变类型:类似 c++ 的值传递
  • 可变类型:类似 c++ 的引用传递

注意python中一切都是对象,严格意义不能说值传递还是引用传递,应该说传不可变对象和传可变对象。

下面是一个示例:

def param_test(obj):
    obj += obj
    print('形参值为:', obj)
 
print("*******值传递*****")
a = 'hello'
print('a的值为:', a)
param_test(a)
print('实参的值为:', a)
 
print("*******引用传递*****")
b = [1, 2, 3]
print('b的值为:', b)
param_test(b)
print('实参的值为:', b)

输出结果:

*******值传递*****
a的值为: hello
形参值为: hellohello
实参的值为: hello
*******引用传递*****
b的值为: [1, 2, 3]
形参值为: [1, 2, 3, 1, 2, 3]
实参的值为: [1, 2, 3, 1, 2, 3]

4、默认参数值

编写函数时,可以给函数形参指定默认值,例如:

def display(param1, param2="world"):
    print(param1 + " " + param2)

display(param1="hello")  # 输出结果:hello world

注意:使用默认值时,必须先在形参列表中列出没有默认值的形参,再列出有默认值的形参

5、返回值

函数可以不返回值,也可以返回一个或一组值,不带参数值的return语句返回None。下面定义一个函数,返回值是字典,例如:

def build_person(first_name, last_name):
    person = {"first":first_name, "last":last_name}
    return person

musician = build_person("jimi", "hendirx")
print(musician)  # 输出结果:{'first': 'jimi', 'last': 'hendirx'}

你可能感兴趣的:(Python,编程基础,python,windows,java)