Python3-函数的定义和调用

Python3-函数的定义和调用

1. 函数介绍

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。可以使用python内置的函数,也可以自己创建函数,即用户自定义函数。

2. 定义函数

创建函数的规则:
①函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
②任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
③函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明。
④函数内容以冒号 : 起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

在这里插入图片描述

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

几个例子:

# 在函数定义后,要空两行。
# ====================== 实例1 ===============================
def hello():
    print('hello world!')
    
    
hello()

# ====================== 实例2 ================================
# 比较大小
def fun(a, b):
    if a>b :
        print('a大于b')
    elif a<b:
        print('a小于b')
    else:
        print('a等于b')


a, b = 2, 3
fun(a, b)
# ====================== 实例3 ===============================
# 计算面积
def area(a, b):
    return a*b


a = 4
b = 5
l = area(a,b)
print('长:', a, '宽:', b, '面积:', l)

3. 调用函数

定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。【函数名、函数参数、代码块结构】

在函数的基本结构完成后,可以通过另一个函数调用,也可以直接在python 命令行提示符执行。

一般函数调用有以下两种形式:
①无返回值:fun_name()
②有返回值:var1 = fun_name()

4. 参数传递

在 python 中,类型属于对象变量是没有类型的

a = 1
b = 'abong'
c = [1,2,3,4,5]

上述代码中,1、‘abong’、[1,2,3,4,5]是3个对象,分别是number类型、string类型、list类型。而a b c是3个变量,本身没有类型,是对象的引用,指向了有类型的对象。

可变对象:list,dict,set 是可以修改的对象。

不可变对象:string, tuple, 和 number 是不可修改的对象。

可变类型:可变对象的类型就是可变类型。姓名(值)变,身份证(对象地址)不变。

def kebian(li):
    print(li)
    print('对象修改前的地址:', id(li))
    li[0] = 1
    print(li)
    print('对象修改后的地址:', id(li))
    return


li = ['a', 'b', 'c']
kebian(li)

在这里插入图片描述

不可变类型:不可变对象的类型就是不可变类型。姓名(值)和身份证(对象地址)同时变。已经不是原来的对象了。

def nokebian(a):
    print(a)
    print('对象修改前的地址:', id(a))
    a = 10
    print(a)
    print('对象修改后的地址:', id(a))
    return


a = 1
nokebian(a)

在这里插入图片描述

为了保证参数能准确的传递,有如下几种参数传递的方式
①按位置传递:按照声明的顺序传递,需指定参数顺序。

# 按位置传递
def fun1(a, b):
    print(a)
    print(b)


fun1('haha', 'xixi')

在这里插入图片描述
②按值传递:按照参数名传递,无需指定参数顺序。

# 按值传递
def fun1(a, b):
    print(a)
    print(b)


fun1(b = 'haha', a = 'xixi')

在这里插入图片描述

③带默认值传递:在声明的时候定义了参数的默认值,在调用的时候缺省该参数会使用参数默认值。

# 带默认值传递
def fun1(a, b='abong'):
    print(a)
    print(b)


fun1('haha')
print('====================================')
fun1(a='haha',b='xixi')

在这里插入图片描述
④未知参数个数传递1:在声明时,有的参数是必须的,有的参数是未知的,对于未知的参数,可以使用*var_name_tuple指定,在调用时,未知的参数组成一个元组,若没有未知参数, 则为空元组。

# 未知参数个数传递
def fun1(a, *var_tuple):
    print(a)
    print(var_tuple)


fun1(a='haha')
print('====================================')
fun1('haha', 'xixi', 'abong')

在这里插入图片描述

⑤未知参数个数传递2:与上述类似,使用**var_name_tuple导入未知的参数,是以字典的形式存放。

# 未知参数个数传递
def fun1(a, **var_tuple):
    print(a)
    print(var_tuple)


fun1(a='haha')
print('====================================')
fun1('haha', b = 'xixi', c = 'abong')   # 调用时必须指定键 值

在这里插入图片描述

⑥未知参数个数传递3:若带*的参数在声明函数的参数中间使用,则带*参数后续的所有参数都必须按值传递。

# 未知参数个数传递
def fun1(a, * , b):
    print(a)
    print(b)


fun1(a= 'haha', b='xixi')
print('====================================')
fun1('haha', b='xixi')  # 参数b必须按值传递

在这里插入图片描述

5. 匿名函数

匿名函数使用lambda声明,整个函数声明只有一行,用于定义简单的函数。

# 声明匿名函数的格式
fun_name = lambda [arg1 [,arg2,.....argn]]:expression
ji = lambda a:a**2

a = int(input('请输入a的值:'))
print('a的平方是:',ji(a))

在这里插入图片描述

6. return语句

返回值语句,用于函数有返回值时。返回值一般是一个对象,通常是number、string、list、tuple、dict、set等类型的对象。一般用于赋值语句,将返回值赋值给变量。

def sum(a, b):
    return a+b


c = sum(1, 2)
print('和为:', c)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_36522099/article/details/110038064