第六章 函数
-函数也是对象,下面程序可以正常运行吗?
def func(): #这里定义了一个名为 func 的函数,它
print("11",end=" ") #在被调用时打印字符串 "11",并且在末尾不换行。
print(id(func),type(func),func) #获取'func'的内存地址,类型,表现形式
(通常是内存地址和函数名)
分析:
会正常运行e.g.输出2352392832160 <class 'function'> <function func at 0x00000223B58A04A0>
函数本质上是对象,可以存储于数据结构(如列表字典)当中
函数对象,类型为 <class 'function'>
-形参和return语句都是可有可无的√
分析:在Python中定义函数时,不可省略的↓
def 关键字:定义函数时必须使用 def 关键字。
函数名称:紧跟在 def 关键字之后的是函数的名称,这是必须的,用于标识函数。
参数列表:即使函数不需要参数,也必须有一对空括号 (),用于定义参数列表。
函数体:至少需要一个冒号 : 和一个缩进的代码块,即函数体,即使它是空的。
例如,一个最简单的函数定义如下:
def foo():
…
这里…是ellipsis object(省略号对象)
形参:
在编程语言中,形参(Formal Parameter)是函数定义中用于接收传递给函数的值的变量。当函数被调用时,形参会被实际的参数(Argument)所替代,这些实际的参数是调用函数时提供的值。
例如,考虑以下Python函数定义:
def greet(name):
print("Hello, " + name + "!")
在这个函数中,name 就是一个形参。当你调用这个函数并传递一个实际的参数时,比如 greet("Alice"),name 形参就会被 "Alice" 这个实际参数所替代,并且函数会输出 "Hello, Alice!"。
-在一个函数中如局部变量和全局变量同名,则局部变量屏蔽全局变量
√
例如
x = 10 # 全局变量
def my_function():
x = 20 # 局部变量,屏蔽全局变量x
print("Inside the function, x =", x)
my_function() # 调用函数
print("Outside the function, x =", x)
#会输出↓
#Inside the function, x = 20
#Outside the function, x = 10
-area是tri模块中的一个函数,执行from tri import area 后,调用area函数应该使用____ 。
area()
分析:
当你使用 from tri import area 导入语句时,你直接将 area 函数从 tri 模块导入到当前的命名空间中。这意味着你可以直接使用 area() 来调用该函数,而不需要模块名称作为前缀。
如果我们用的是 import tri 那么调用area函数要用tri.area()例如
import tri
# 调用tri模块中的area函数
triangle_area = tri.area(base=10, height=5)
-函数可以改变哪种数据类型的实参?
int:整数 是不可变数据类型
string:字符串 是不可变数据类型
float:浮点数 是不可变数据类型
-list :列表是可变数据类型,函数内部可以改变原始的列表实参
-函数定义如下,程序输出是什么
def f1(a,b,c):
print(a+b)
nums=(1,2,3)
f1(nums)
分析:
f1 函数期望接收三个参数 a, b, c,但 f1(nums) 只传递了一个参数 nums;这里的nums相当于参数a。这会导致函数调用时参数数量不匹配(b和c没有)的错误
修正
def f1(a, b, c):
print(a + b)
nums = (1, 2, 3)
f1(*nums)
会输出3
①函数参数数量匹配:函数调用时传递的参数数量必须与函数定义时的参数数量匹配。
②拆包操作:使用 * 操作符可以将一个可迭代对象解包为单独的元素并传递给函数,确保参数数量匹配。
-下面程序运行结果是
def fun(x1,x2,x3,**x4):
print(x1,x2,x3,x4)
fun(x1=1,x2=22,x3=333,x4=4444)
分析:在函数定义中,**x4 会将所有多余的关键字参数以字典的形式捕获到 x4 中。如果你传递一个与 x4 同名的参数,那么它会被视为一个普通参数,而不是被捕获到 **x4 中。例如:
def fun(x1, x2, x3, **kwargs):
print(x1, x2, x3, kwargs)
fun(x1=1, x2=22, x3=333, extra=4444)
输出结果是
1 22 333 {'extra': 4444}
所以本题将输出
1 22 333 {'x4': 4444}
下列程序将输出什么
def scope():
n=4
m=5
print(m,n,end=' ')
n=5
t=8
scope()
print(n,t)
分析:

最低0.47元/天 解锁文章

1377

被折叠的 条评论
为什么被折叠?



