python基础

1:简述列举了解的编程语言及语言间的区别?

编程语言实质上分为:解释型和编译型两种,两种语言实质上是执行机制的不同	
编译型语言是指将代码一次性编译生成可执行文件,如果代码出现错误,就需要从头开始编译,缺点是开发效率低,代表是c语言
解释型语言是指将代码交给解释器,由解释器逐行翻译成代码,并且执行,优点是开发效率高,缺点是运行速度慢,需要依赖解释器,代表是python

2:列举python2 和python3的区别?

1、print:在python2中,print被视为一个语句而不是一个函数,python3中,print()被视为一个函数        2、整数的除法:在python2中,键入的任何不带小数的数字,将被视为整数的编程类型。比如5/2=2,解决方法:5.0/2.0=2.5
			在python3中,整数除法变得更直观 5/2=2.5         
3、Unicode:Python 2 默认使用 ASCII 字母表;Python 3 默认使用 Unicode
4:long整数类型被Python2废弃,统一使用int
5:xrange和range
	py2:xrange
       range
	py3:range  统一使用range,Python3中range的机制也进行修改并提高了大数据集生成效率 
6:包中的__init__.py
	Python2: 必须要有
	Pyhon3: 有没有无所谓
7:新式类
	Python2: 必须显式继承object,才是新式类
	Python3: 默认就是新式类
……

3:看代码写结果?

v1 = 1 or 2   1
v2 = 3 and 7 or 9 and 0   7

4:比较以下值有什么不同?

v1 = [1,2,3]  列表中的每一个值都是一个元素
v2 = [(1),(2),(3)]  列表中的值都是数组
v3 = [(1,),(2,),(3,)] 列表中的每一个元祖

5:用一行代码实现数值交换?

a = 1
b = 2
a,b = b,a 

6:python中单引号。双引号,三引号的却别?

单引号和双引号表示字符串,注意同一个字符串中出现单引号之后,但如果字符串中还有单引号就需要转义。
三引号:如果要将字符串内容自动换行的话使用三引号,另外就是表示注释内容

7:is和==的区别?

is是判断两边的内存地址是否相同
==是判断两个值是否相等

8:python中如何实现tuple和list的转化?

tuple转list: list(tuple)
list转tuple:tuple(list)

9:如何实现字符串name = '老男孩'的反转?

1:字符串切片:name1 = name[::-1]
2:使用列表的reverse方法:将字符串转化成列表,然后转化之后再用join拼接起来

10:两个set如何获取交集,并集,差集?

交集:使用intersection,也可以使用列表推导式
并集:使用union或者|
差集:使用.difference

11:哪些情况下,y != x-(x-y)会成立?

x和y是两个不相等的非空集合且不为父子关系的两个集合

12:python如何拷贝一个对象?

使用copy函数,[:]

13:简述赋值,浅拷贝,深拷贝的作用?

赋值:将多个变量指向一个同一个内存地址就是赋值
浅拷贝:
1. 只拷贝第一层元素的地址,只有修改第一层的时候元数据不受影响
2. 给可变数据类型进行添加的时候源数据会受影响
3. = 是修改,.append是添加
4. 可变数据类型能够添加和修改,不可变数据类型只能修改
深拷贝:不可变数据类型内存地址共用,可变数据类型新开辟一个空间

14:pass的作用?

表示不执行当前代码块,占位

15:阅读代码写结果:

import copy 
a = [1,2,4,5,['b','c']] 
b = a 
c = copy.copy(a) 
d = copy.deepcopy(a)
a.append(5) 
a[4].append('d')
print(b) 
print(c) 
print(a)

[1, 2, 4, 5, ['b', 'c', 'd'], 5]
[1, 2, 4, 5, ['b', 'c', 'd']]
[1, 2, 4, 5, ['b', 'c', 'd'], 5]

16:用Python实现9*9乘法表?

for i in range(1,10):    
    for j in range(1,i+1):        
        print("%d*%d=%d"%(i,j,i*j),end=" ")    
    print("")
    
i = 1
while i<=9:
	# 这个位置写代码
	j = 1
	while j<= i:
		# "谁"*"谁"="谁"
		print("%d*%d=%2d" % (i,j,i*j),end=" ")
		j+=1
		
	# 打印换行
	print()	
	i+=1

17:用python实现一个斐波那切数列?

def fib_recur(n):
  assert n >= 0, "n > 0"
  if n <= 1:
    return n
  return fib_recur(n-1) + fib_recur(n-2)
for i in range(1, 20):
    print(fib_recur(i), end=' ')

18:如何删除列表中重复的值?

1:将列表转化成set
2:使用for循环进行遍历

19:一个大小为100G的文件etc_log.txt,要读取文件内容,写出具体的代码?

with open("etc_log.txt",encoding='utf8') as f:
    for line in f:
        print(line)

20:a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) ,请问a是什么?

a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

21:lambda关键字的作用?

lambda == def == 关键字
lambda是定义函数的关键字,相当于函数的def
只可以返回一个数据类型

22:*args和**kwargs的作用?

*args(函数定义阶段代表聚合,返回的是一个元祖): 大家共用的一个名字,可以修改但是不建议
**kwargs(聚合关键字参数,返回的是一个字典)

23:如何在函数中设置一个全局变量?

在函数中定一个globa

24:filter,map,reduce的作用?

filter:筛选过滤
map():映射函数--将每个元素都执行了指定的方法
reduce() :--计算,一层一层垒起来算,指定的函数方法必须接受两个形参

25:什么是匿名函数?匿名函数有什么作用

匿名函数就是没有名字的函数,不必担心函数名冲突
经常与一些内置函数相结合使用,

26:python中递归的最大层数?

官方文档写明是1000层,实际测试只有997层

27:什么是迭代器?

是基于上一次停留的位置,进行取值,具有 __ iter __ () 和  __ next __ () 两个方法的才是迭代器

可迭代对象
1. 定义:只要具有 __ iter __ 方法的就是一个可迭代对象
2. list,tuple,str,set,dict取值方式只能直接看

28:什么是生成器?

本质就是一个迭代器,生成器是程序员自己写的一种迭代器

29:什么是装饰器及应用场景?

在不修改源代码及调用方式的前提下,对功能进行额外添加就是开放封闭原则

30:什么是反射及应用场景?

主要是指程序可以访问、检测和修改它本身状态或行为的一种能力
python面向对象中的反射:**通过字符串的形式操作对象相关的属性和方法**。python中的一切事物都是对象(都可以使用反射)
通过字符串操作对象的属性和方法:hasattr()及getattr()配合使用
应用场景:1、对象的角度使用反射
		2、类的角度
		3、当前模块
		4、其他模块使用

31:写一个普通的装饰器?

import time 
def func():
       time.sleep(1)
       print("这是小刚写的功能")
       
def func():
       time.sleep(1)
       print("这是小红写的功能")
       
def index():
    time.sleep(2)
	print("这是小明写的功能")


def times(func):	#func == index 函数内存地址
    def foo():
        start_time = time.time()	#时间戳,被装饰函数执行前干的事
        func()	#fun == index ,后面加括号就是调用函数
        print(time.time()-start_time)#被装饰函数执行后干的事
        return foo 
 
index = time(index)			#index== foo内存地址
index()		#index() == foo ()
func = time(func)
func()

32:写一个带参数的装饰器?

def warpper(func):
    def inner(*args,**kwargs):
        user = input("user:")
        pwd = input("pwd:")
        if user == 'alex' and pwd == "dsb":
            func(*args,**kwargs)
    return inner

@warpper
def foo():
    print("被装饰的函数")

foo()

33:求结果?

def num():  
	return [lambda x:i*x for i in range(4)] 
print([m(2) for m in num()])

[6, 6, 6, 6]

34:def(a,b=[])有什么坑?

函数的第二个参数是一个列表,第一次实例化生成一个list,以后每次实例化地址的时候都会使用第一次实例化之后的地址进行存储

35:看代码写结果?

def func(a,b=[]):    
	b.append(a)    
	return b
v1 = func(1) 
v2 = func(2,[10,20]) 
v3 = func(3) 
print(v1,v2,v3)

[1,3]  [10, 20, 2]  [1, 3]

36:看代码写结果

def func(a,b=[]):    
	b.append(a)    
	return b
v1 = func(1) 
print(v1) 
v2 = func(2,[10,20]) 
print(v2) 
v3 = func(3) 
print(v3)

v1 = 1
v2 = [10,20,2]
v3 = [1,3]

37:请编写一个函数实现将ip地址转换成一个整数?

00001010 00000011 00001001 00001100 =  
ip = "10.3.9.12"
strvar = ""
for i in ip.split("."):
	bin_str = str(bin(int(i)))[2:]
	# 总长度是8 原字符串居右
	strvar += bin_str.rjust(8,"0")
print(strvar)
print(int(strvar,2))
 方法二
ip = "10.3.9.12"
strvar = ""
for i in ip.split("."):
	# format 将整型转化成二进制,不够8位的拿0补位
	strvar += format(int(i) , "08b")
print(int(strvar,2))

38:查找一个目录下所有的文件

import os
#获取当前文件路径
path = os.getcwd()
……

39:求结果?

import math 
print (math.floor(5.5))

5

40:是否使用过functools中的函数,其作用是什么?

使用过,用于高阶函数中
是一些大神写的第三方库,方便我们进行开发使用

41:re中的match和search有什么区别?

search 拿到的一个对象,取值在后面加.group(),只要字符串中有符合规则的就开始查找,任意位置
match 必须从头开始查找,开头不符合规则,不查找

42:用python匹配html tag的时候<.>和<.?>有什么区别?

<.>是贪婪匹配,表示匹配<>中所有符合的内容
<.?>表示非贪婪匹配,代表只匹配左侧0个或1个

43:如何生成一个随机数?

使用random模块
import random
random.randint(1,5)--随机1,5之间的整数
random.random():默认0-1之间的小数
……    

44:super的作用?

按照mro进行查找
super 里的类名是指定查找mro中类名的下一个类,self 是指定查找时使用的mro顺序
书写方法:super(类名,self)

45:双下划线和单下划线的区别?

单下划线代表私有属性,是程序员之间的一种规范,高速其他人不可以在外部使用这个方法或者属性
双下划线是避免父类方法覆盖被子类覆盖

46:@staticmethod和@classmethod的区别?

@staticmethod是静态方法,参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
@classmethod是类方法,必须要依赖类来实现

47:实现一个单例模式?

import threading
import time
class Singleton:
	inistance = None
	lock = threading.RLock()
	def __init__(self,name):
		self.name = name
		
	def __new__(cls,*args,**kwargs):
		if cls.inistance:
			return cls.inistance
		with cls.lock:
			if cls.inistance:
				return cls.inistance
			time.sleep(0.2)
			cls.inistance = object.__new__(cls)
		return cls.inistance
def task():
	obj = Singleton("x")
	print(obj)
for i in range(10):
	t = threading.Thread(target = task)
	t.start()
posted @ 2020-02-26 11:15  丶Howie  阅读(195)  评论(0编辑  收藏  举报