python面试题问答题

python面试题问答题

1.对比

*args     **kwargs   的区别
__new__   __init__   的区别
  is      ==         的区别
range 	  xrange   的区别

答案:

(1)*args 表示非关键字收集参数,收集的实参会组成一个元组,接收没有任何形参接收的非关键字实参。可以与普通形参共存。

**kwargs 表示关键字收集参数,收集的实参会组成一个字典,形参名作为键,值为值,仅接收没有任何形参接收的关键字参数。可以与普通形参共存。

并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。

(2)_init_: 当实例对象创建完成后被调用的,初始化对象时触发,参数至少一个self,接收对象。使用该方式初始化的成员都是直接写入对象当中,类中无法具有。

_new_:是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。参数至少一个cls,接收当前类。必须返回一个对象是实例,触发顺序:先触发__new__才会触发_init_。也就是,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。

(3)is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。

is: 同一性运算符 这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。

==:是python标准操作符中的比较操作符,表示判断两个值的数据类型,数据值,是否一致。

(4)range :range会直接生成一个list对象

xrange:并不会直接生成一个list对象,会在每一个调用时返回其中的一个值。

在 python3 中,去除了 range 函数,将 xrange 函数更名为 range 函数

2.常用的版本控制工具及其常用命令

答案:

版本控制工具:git
    
常用命令:
    * git add .
    * git status 
    * git commit 提交至本地仓库
    * git origin
    * git push

3.装饰器用途:@staticmethod 和@classmethod,@property用途

答案:

@classmethod:类方法,类方法是给类用的,类在使用时会将类本身当做参数传给类方法的第一个参数,python为我们内置了函数classmethod来把类中的函数定义成类方法。

@staticmethod:静态方法

@property:属性方法:将一个类方法转变成一个类属性,只读属性。便于访问

4.怎么样的二级容器不能强转成字典

答案:

不等长的二级容器不能转化成字典

5.写尽可能多的str对象的方法?

1、全部大写:str.upper()

str1 = 'nostalgia'
str2 = str1.upper()
print(str2)
NOSTALGIA

2、全部小写:str.lower()

str1 = 'NOSTALGIA'
str2 = str1.lower()
print(str2)
nostalgia

3、大小写互换:str.swapcase

str1 = 'No Smouking'
str2 = str1.swapcase()
print(str2)
nO sMOUKING

4、首字母大写,其余小写:str.capitalize()

str1 = 'nostalgia fly'
str2 = str1.capitalize()
print(str2)
Nostalgia fly

5、首字母大写:str.title()

str1 = 'nostalgia fly'
str2 = str1.title()
print(str2)
Nostalgia Fly

6、应对所有字母的小写:str.casefold()

#str.lower() 只能转换ASCII字母。
str1 = 'NOSTALGIA'
str2 = str1.casefold()
print(str2) 
nostalgia

6.什么是lamada函数?下面这段代码输出的是什么?

nums = range(2,20)
for i in nums:
    nums = filter(lambda x:x==i or x % i,nums)
nums
<filter at 0x493c898>
print(list(nums))
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。lambda表达式是一种简洁格式的函数。该表达式不是正常的函数结构,而是属于表达式的类型。

定义lambda函数的形式如下(lambda参数:表达式)lambda函数默认返回表达式的值。你也可以将其赋值给一个变量。
lambda函数可以接受任意个参数,包括可选参数,但是表达式只有一个。

7.python里面如何拷贝一个对象?(赋值、浅拷贝、深拷贝的区别)

答案:

赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。

浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3,copy模块的copy()函数}

深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的deep.deepcopy()函数}

8.介绍一下except的用法和作用?

Python的except用来捕获所有异常, 因为Python里面的每次错误都会抛出 一个异常,所以每个程序的错误都被当作一个运行时错误。

一、下面是使用except的一个例子:

try:

foo = opne(̶file”) #open被错写为opne
except:

sys.exit(̶could not open file!”)

因为这个错误是由于open被拼写成opne而造成的,然后被except捕获,所以debug程序的时候很容易不知道出了什么问题

二、下面这个例子更好点:

try:

foo = opne(̶file”) # 这时候except只捕获IOError

except IOError:

sys.exit(̶could not open file”)

9.python中pass语句的作用是什么?

pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作,比如:

while False:

pass

pass通常用来创建一个最简单的类:

class MyEmptyClass:

pass

10.如何用python来进行查询和替换一个文本字符串?

可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0])

  • replacement是被替换成的文本
  • string是需要被替换的文本
  • count是一个可选参数,指最大被替换的数量
import re 
p = re.compile('blue|white|red')
print(p.sub('color','blue socks and red shose'))
print(p.sub('color','blue socks and red shose',count=1))
color socks and color shose
color socks and red shose

11.python里面如何生成随机数

在 Python 中用于生成随机数的模块是 random,在使用前需要 import. 如下例子可以酌情列举:

  • random.random():生成一个 0-1 之间的随机浮点数;
  • random.uniform(a, b):生成[a,b]之间的浮点数;
  • random.randint(a, b):生成[a,b]之间的整数;
  • random.randrange(a, b, step):在指定的集合[a,b)中,以 step 为基数随机取一个数;
  • random.choice(sequence):从特定序列中随机取一个元素,这里的序列可以是字符串,列表,元组等。
import random
print(random.random())
print(random.uniform(1,10))
print(random
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值