python 函数笔记(初学)

1、定义一个函数

def  max(num1,num2) :   #函数头
	if num1>num2:
		return num1     #函数体
	else :
		return num2

函数包括函数头和函数体,函数头由以def开头,括号里包括形参,
并以冒号结束
参数就像是一个占位符,当调用函数时就将值传递给参数
函数也可以不带参数

2、调用一个函数
注意:1、带返回值的函数也可以作为语句被调用,在这种情况下,函数返回值就会被忽略掉。
2、函数在内存中被调用,函数可以定义在脚本中的任意一个位置。

3、调用栈
每次调用函数时,系统就会创建一个为函数存储它的参数和变量的激活记录,然后将这个激活记录放在一个被称为堆栈的内存区域。
调用栈被称为执行堆栈或运行堆栈,经常被简称为堆栈。

当一个函数调用另一个函数时,调用者的激活记录保持不变,然后为新的函数调用创建一个新的激活记录。当一个函数结束它的工作之后就将程序控制权转移给它的调用者,并且从堆栈中删除它的激活记录。

堆栈采用先进后出的方式存储激活记录

当堆中的对象不在需要时,python会自动将这些对象清空

6.4 ## 带返回值和不带返回值的函数
注意:
1、不管是否是使用return ,所有python的函数都将返回一个值。如果某个值没有返回值,在默认的情况下,它返回一个特殊的值None。
因此无返回值函数不会返回值,它也被称为None函数。None函数可以赋值给一个变量来表明这个变量不指向任何对象。

None函数可以终止函数并将控制权返回调用者

returnreturn  None

实例:

def printgrade():
	if score>100 or score <0
		return None

6.5、位置参数和关键字参数:

实参的两种类型:位置参数和关键字参数

位置参数:

def nprintln(message,n):
	for i in range(n):
		print(message)

可以使用nprintln(‘a’,3)将a传递给messge, 将3 传递给n,然后将a输出三次
而nprintln(3,‘a’)是将a传递给n,将3传递给message
位置参数的实参必须与函数头中定义的形参的个数,顺序,类型上匹配。

关键字参数:
通过name = value的形式传递每个参数的方式
例如:

nprintln(n=5,message = 'a')使用关键字参数可以以任意的顺序出现

位置参数可以和关键字参数混在一起,但位置参数不能出现在任意关键字参数之后
例如:

def f(p1,p2,p3):
	f(30,p2=4,10)调用它会出错,因为位置参数10出现在关键字参数之后

6.6通过传递引用来传递参数:

重点:当调用带参数的函数时,每个实参的引用值被传递给形参

术语通过值传递

数据通常是对象,对象的变量通常指向对象的引用
调用函数时,实参的值就被传递给形参。这个值通常就是对象的引用值。
***重点:所有变量指向的都是对象,他们的地址都是对象的地址

数字和字符串都被称为不可变对象。不可变对象的内容是不可以被改变的
***将一个新数字赋值给变量时,python就会给变量创建一个新对象。

不可变对象的地址是不变的,每个变量指向的同一个变量的地址是相同的
if __name__ == '__main__':
    c= 1
    d= 2
    a = 1
    b = 2
    print(id(a),id(b),id(c),id(d))
    print(a,b)
``
结果:
8791529935936 8791529935904 8791529935904 8791529935936
发布了25 篇原创文章 · 获赞 3 · 访问量 498

猜你喜欢

转载自blog.csdn.net/qq_44045101/article/details/101549787