前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >热饭面试复习【python常见面试题 】2/4

热饭面试复习【python常见面试题 】2/4

作者头像
我去热饭
发布2022-05-19 17:20:31
1770
发布2022-05-19 17:20:31
举报
文章被收录于专栏:测试开发干货

Part1前言

终于复习完了基础理论,现在进入python阶段。其实python如果你已经学习过了,那么此处复习的就应该是那些经常忘记,比较难写的函数库名和面试题等。

注意,一旦你简历中写了精通python,那么面试官不可能问你简单的常见的,比如列表的增删改查这种。问,就一定问一些比较偏门冷门的,所以这里进行列举:

Part2常见易忘题:

我敢打赌你不百度的情况下,答不对全部!

1时间格式化输出

代码语言:javascript
复制
datetime.strptime('17/Sep/2012:11:40:00','%d/%b/%Y:%H:%M:%S').strftime('%Y%m%d-%H%M%S')

 %y 两位数的年份表示(00-99)
  %Y 四位数的年份表示(0000-9999)
  %m 月份(01-12)
  %d 月内中的一天(0-31)
  %H 24小时制小时数(0-23)
  %I 12小时制小时数(01-12) 
  %M 分钟数(00-59)
  %S 秒(00-59)
  
  %a 本地简化星期名称
  %A 本地完整星期名称
  %b 本地简化的月份名称
  %B 本地完整的月份名称
  %c 本地相应的日期表示和时间表示
  %j 年内的一天(001-366)
  %p 本地A.M.或P.M.的等价符
  %U 一年中的星期数(00-53)星期天为星期的开始
  %w 星期(0-6),星期天为星期的开始
  %W 一年中的星期数(00-53)星期一为星期的开始
  %x 本地相应的日期表示
  %X 本地相应的时间表示
  %Z 当前时区的名称
  %% %号本身 

2动态给类生成类函数

代码语言:javascript
复制
def gen_unit_test(self, test_name, function):
    setattr(self, 'test_{}'.format(test_name), function)

3获取命令行返回值

代码语言:javascript
复制
x = subprocess.check_output('adb shell cat /system/build.prop | grep "product"',shell=True)
print x.split('\r\n')

4永久存储模块

代码语言:javascript
复制
pickle.dump() 存
pickle.load() 取

5正则

代码语言:javascript
复制
符号:
|    是或的意思
.    是充当任意一个字符
^    是字符串的开始
$    是字符串的结尾
*    表达0次以上
+    表达1次以上
?   表达0,1
{}   表达次数
[]   表达内部任意一个字符
[0-9] 表达0~9 
[^]  表达不包含
+?    ?紧贴前面+是代表非贪婪模式,取得越少越好。
()   把正则表达式分成子组
\d   匹配任何一个单个数字
\D   匹配任何一个非数字
\w   匹配任何数字或字母
\W   匹配任何非数字或字母的字符
\s   任何空白字符  
\S   任何非空白字符
\b   匹配单词边界
\nn 匹配已经保存的子组
\c  逐一匹配特殊字符c ,即取消它的特殊含义,按字面匹配
\A  匹配字符串的起始
\Z  匹配字符串的结束

方法:
match() :从开始找
search():从任意位置找
group() :返回全部对象
groups():返回包含全部子组的元组
findall() :返回一个列表,非重复的
finditer()  :返回迭代器,可重复
split()   :根据正则中的分隔符吧字符串分隔为一个列表,返回此列表,可设置最大分隔次数
sub(正则,新,旧,最大次数)   :把所有符合正则的字符串替换成新的。
subn()     :和sub一样,但是多返回中可包含表示替换次数的数值

例子:
import re
m=re.search('foo','foo')
print m.group()

6线程

代码语言:javascript
复制
守护线程:子线程名称.setDemo(True)
.start()  线程开始执行
.run()   定义线程功能的函数
.join(timeout=None)   程序挂起,直到线程结束;最多阻塞timeout秒
.getName()    返回线程的名字
.setName()     设置线程的名字
.isAlive()     布尔标志,表示这个线程是否还在运行中
.isDaemon()    返回线程的daemon标志
.setDaemon(daemonic)    把线程的daemon标志设为daemonic(一定要在调用start()函数前调用)

例子:

import threading
def music():
    for i in range(100):
        print i
        time.sleep(1)

if __name__ == '__main__':
    t = threading.Thread(target=music)
    t.setDaemon(True)
    t.start()
    time.sleep(3)
    print "all over %s" %ctime()

7运行单独python代码

代码语言:javascript
复制
exec """ 代码组"""
exec ".py"  可以运行python文件对象"   因为运行一次之后光标就在文件最后一行,需要f.seek(0) 光标调回到最初,才能再次运行

8多行代码顺序打包运行

代码语言:javascript
复制
many_code = compile("""
for i in rang(10):
    print "hello"
""","","exec")
exec many_code

9判断属性

代码语言:javascript
复制
if (123)==int:
if isinstance(123,int):

10装饰器

代码语言:javascript
复制
关于装饰器: 如果下面有类的话,第一层接收的是方法本身,第二次自动接收类,返回需要返回 方法本身(类)
def log(func):
    print func.__name__,"1"
    def ww(a):
        print a
        return func(a)
    return ww


@log
def test_zzz(self):
    print "haha"

好了,本节结束!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Part1前言
  • Part2常见易忘题:
    • 1时间格式化输出
      • 2动态给类生成类函数
        • 3获取命令行返回值
          • 4永久存储模块
            • 5正则
              • 6线程
                • 7运行单独python代码
                  • 8多行代码顺序打包运行
                    • 9判断属性
                      • 10装饰器
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档