码迷,mamicode.com
首页 > 其他好文 > 详细

常见问题集锦

时间:2018-08-24 19:34:25      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:也会   传递   key   dom   dict   字符串   随机数   插入   *args   

# 深拷贝
# lst1=[4,3,2]
# lst2=lst1
# lst2.append(1)
# print(lst1)

# 浅拷贝
# lst1=[4,3,2]
# lst2=lst1[::]
# lst2.append(1)
# print(lst1)
# lst3=lst1[::-1] //反转list
# print(lst3)

# print(6//3)
# print(5//3) 整除/地板除

# 判断回文数(列表)
# def is_Huiwenshu(x):
# mm = str(x)
# if mm==mm[::-1]:
# return True
# else:
# return False

# reverse()用法、字符串逆序
# a = ‘abcdefgh‘
# print(a[::-1])
# t = list(a)
# t.reverse()
# "".join(t)
# print(t)
# 写成函数
# def reverseStr(ss):
# c = []
# for i in range(len(ss)):
# c.append(ss[i])
# c.reverse()
# return ‘‘.join(c)

# 判断回文数
# def converted(s):
# ss = s[:]
# if len(ss)>2 and s==ss[::-1]:
# return True
# else:
# return False
#
# s = ‘abcdcba‘
# print(converted(s))

# 随机生成100个数,然后写入文件
# import random
# with open(‘1.txt‘,‘w‘) as f:
# for i in range(1,101):
# n = random.randint(1,100)
# f.write(str(n)+‘\n‘)

# 给字典排序
# dict = {‘a‘:3,‘bc‘:5,‘c‘:3,‘asd‘:4,‘33‘:56,‘d‘:0}
# mm = sorted(dict.items(),key=lambda i:i[0],reverse=True) #按键值进行排序

# lst = [4,7,3,2,8]
# ll=lst.sort() #sort() 会改变原来List的值(顺序)
# mm=sorted(lst) #sorted(xx) 不会改变原来list的值(顺序)

# 对列表去重
# a=[1,3,4,4,2,2,5,3]
# print(set(a)) #利用集合去重

# for i in a: #利用count循环去重
# if a.count(i)>1:
# a.remove(i)
# print(a)

Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

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

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

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

 

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

答:try…except…except…[else…][finally…]

执行try下的语句,如果引发异常,则执行过程会跳到except语句。对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。

如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

try下的语句正常执行,则执行else块代码。如果发生异常,就不会执行

如果存在finally语句,最后总是会执行。

 

Python里面如何生成随机数?

答:random模块

随机整数:random.randint(a,b):返回随机整数x,a<=x<=b

random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。

随机实数:random.random( ):返回0到1之间的浮点数

random.uniform(a,b):返回指定范围内的浮点数。

 

Python里的浅拷贝和深拷贝

赋值(引用),copy(),deepcopy()的区别

import copy

a = [1, 2, 3, 4, [‘a‘, ‘b‘]]  # 创建原始对象

b = a                         # 赋值,对内存中对象的引用
c = copy.copy(a)              # 对象拷贝,浅拷贝
d = copy.deepcopy(a)          # 对象拷贝,深拷贝

a.append(5)                   # 修改对象a
a[4].append(‘c‘)              # 修改对象a中的[‘a‘, ‘b‘]数组对象

print(‘a = ‘, a)
print(‘b = ‘, b)
print(‘c = ‘, c)
print(‘d = ‘, d)

‘‘‘
输出结果:
a =  [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘], 5]
b =  [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘], 5]
c =  [1, 2, 3, 4, [‘a‘, ‘b‘, ‘c‘]]
d =  [1, 2, 3, 4, [‘a‘, ‘b‘]]


Python中read,readline,readlines的区别

  • read,读取整个文件
  • readline,读取下一行,使用生成器方法
  • readlines,读取整个文件到一个迭代器以供我们遍历

 

这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?

答:如果我们不确定往一个函数中传入多少参数,或者我们希望以元组(tuple)或者列表(list)的形式传参数的时候,我们可以使用*args(单星号)。如果我们不知道往函数中传递多少个关键词参数或者想传入字典的值作为关键词参数的时候我们可以使用**kwargs(双星号),args、kwargs两个标识符是约定俗成的用法。

另一种答法:当函数的参数前面有一个星号*号的时候表示这是一个可变的位置参数,两个星号**表示这个是一个可变的关键词参数。星号*把序列或者集合解包(unpack)成位置参数,两个星号**把字典解包成关键词参数。

代码辅助理解:技术分享图片

技术分享图片

 

 

谈一谈Python的装饰器(decorator)

装饰器本质上是一个Python函数,它可以让其它函数在不作任何变动的情况下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景。比如:插入日志、性能测试、事务处理、缓存、权限校验等。有了装饰器我们就可以抽离出大量的与函数功能无关的雷同代码进行重用。

 

什么是lambda表达式?它有什么好处?

简单来说,lambda表达式通常是当你需要使用一个函数,但是又不想费脑袋去命名一个函数的时候使用,也就是通常所说的匿名函数。

lambda表达式一般的形式是:关键词lambda后面紧接一个或多个参数,紧接一个冒号“:”,紧接一个表达式。lambda表达式是一个表达式不是一个语句。

技术分享图片

常见问题集锦

标签:也会   传递   key   dom   dict   字符串   随机数   插入   *args   

原文地址:https://www.cnblogs.com/fancyl/p/9531316.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!