Python语言基础常见考题(一)

Python语言基础常见考题

1、Python是静态还是动态类型?强类型还是弱类型?

动态强类型

http://img.mukewang.com/szimg/60f392f1096983a107170218.jpg

Python作为后端语言优缺点

http://img.mukewang.com/szimg/60f4cdd209c6b18708480336.jpg

鸭子类型

关注点在对象的行为,而不是类型(duck typing)

比如 file,StringIO,socket 对象都支持read/write方法(file like object)

再比如定义了 iter 魔术方法的对象可以用 for 迭代

http://img.mukewang.com/szimg/60f4ce1b092668fe08780384.jpg

#鸭子接口,更关注方法而非类型
class Duck:
    def quack(self):
        print("gua gua")

class Person:
    def quack(self):
        print("我是人类,但我也会gua gua gua")

def in_the_forest(duck):
    duck.quack()#quack方法

def game():
    donald = Duck()
    john = Person()
    in_the_forest(donald)#调用在森林中这个方法,不管类型是duck还是Person都可以输出
    in_the_forest(john)
    print(type(donald))#输出类型
    print(type(john))
    print(isinstance(donald,Duck))#自省方法
    print(isinstance(john,Person))

game()
monkey patch

http://img.mukewang.com/szimg/60f4d3ad09d2b1e007130357.jpg

什么是自省?

运行时判断一个对象的类型

Python一切皆对象,用 type, id, isinstance 获取对象类型信息

Inspect 模块提供了更多获取对象信息的函数

is和= 区别

is 是判断id是否相等(是否同一个对象)
= 是判断两个变量的值是否相等

什么是列表和字典推导?

http://img.mukewang.com/szimg/60f4d88a09503afc08140335.jpg​

a = ['a','b','c']
b = [1, 2, 3]
d={}
for i in range(len(a)):
    d[a[i]] = b[i]
print(d)

#列表和字典推导
d = {k: v for k, v in zip(a,b)}#用zip成对迭代a b
print(d)


x = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
sets = {x for x in range(10)}
print(sets)


# 获得1~20的偶数的平方值的 list
#不优雅方式
list = []
for i in range(1, 21):
    if i % 2 == 0:
        list.append(i*i)
print(list)

#优雅方式
# step 1:[]
# step 2:[for i in range(1, 21) if i%2==0]
# step 3:[i*i for i in range(1, 21) if i%2==0]
betterList = [i*i for i in range(1, 21) if i%2==0]
print(betterList)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值