函数调用
- 一个段代码定义如下,下列调用结果正确的是?
def bar(multiple):
def foo(n):
return multiple**n
return foo
A. bar(2)(3)==8
B. bar(2)(3)==6
C. bar(3)(2)==8
D. bar(3)(2)==6
答案:A
解析: 一般而言,调用一个函数是加一个括号。如果看见括号后还有一个括号,说明第一个bar函数返回了一个函数,如果后面还有括号,说明前面那个也返回了一个函数。以此类推。
第一步:执行bar函数
bar(2) 返回内层函数foo 传入私有变量 multiple=2
第二步:执行foo函数
bar(2)(3) -> foo(3) -> 2 * *3 -> 8
- 根据以下程序,下列选项中,说法正确的是()
class Vector:
_slots_='x','y'
def_init_(self):
pass
class Vector3d(Vector):
_slots_='x','z'
def_init_(self):
pass
vector=Vector()
vector3d=Vector3d()
A. 若子类没有定义_slots_属性,则子类可以继承父类的_slots_属性
B. Vector类的实力对象Vector会自动获得实例属性x和y
C. Vector3d类的实例对象vector3d最多只能允许属性x和z
D. Vector3d类的实例对象vector3d最多只能允许属性x、y和z
答案:D
解析:
A. python中凡是 “__” 开头的变量,都是私有变量,私有变量继承需要定义同名变量,因此A错误
B. slots__是python类中的特殊变量,用于限制实例对象的属性,如__slots=‘x’,‘y’,那么实例对象的属性就只能从这些里面找,因此它起的是限制效果而非自动获得,因此B错误。
C. 如果子类没有定义__slots__属性,则不会继承父类的__slots__属性,如果子类定义了__slots__属性,则子类对象允许的实例属性包括子类的__slots__加上父类的__slots_。因此C错
D. 选D
数据类型
bool
当使用 bool() 函数来转换一个值时,Python会按照以下规则来确定布尔值:
数字类型(整数和浮点数):非零值转换为 True,0(零)转换为 False。
字符串类型:非空字符串转换为 True,空字符串 ‘’ 转换为 False。
列表、元组、字典等容器类型:非空容器转换为 True,空容器(如 [], {})转换为 False。
None 是Python中的一个特殊类型,表示空值或没有值。当你尝试将 None 转换为布尔值时,它会被视为一个“假值”(falsy value),类似于 0、0.0、空字符串 ‘’、空列表 []、空字典 {}、以及空元组 () 等。
bool(‘0’) | True |
---|---|
bool(0) | False |
bool(None) | False |
计算
- 对于下面的python3函数,如果输入的参数n非常大,函数的返回值会趋近于以下哪一个值(选项中的值用Python表达式来表示)
import random
def foo(n):
random.seed()
c1=0
c2=0
for i in range(n):
x=random.random()
y=random.random()
r1=x*x+y*y
r2=(1-x)*(1-x)+(1-y)*(1-y)
if r1<=1 and r2<=1:
c1+=1
else:
c2+=1
return c1/c2
A. 4/3
B. (math.pi-2)/(4-math.pi)
C. math.e**(6/21)
D. math.tan(53/180math.pi)
答案:B
解析:random.random()返回一个0和1之间的随机浮点数
c2=2(11-1/4pi1^2)=(4-pi)/2
c1=11-c2=(pi-2)/2
c1/c2=(pi-2)/(4-pi)