题外
我咋每天这个点写东西...今天开会开到比较晚,小小原谅一下我自己==因为最近的项目,总结帖变成了python技巧学习贴...
找工作
今天聊了一下,感觉找工作还是要项目经验够才比较稳,特别是找研究型实验室的工作,加油呀,找个方向好好做点东西吧。然后顺便补基础...
讲课提纲
python安装包失败
转换下载源:
pip3 install -i https://pypi.douban.com/simple yourpackagename
国内主要下载源:
- https://pypi.douban.com/ 豆瓣
- https://pypi.hustunique.com/ 华中理工大学
- https://pypi.sdutlinux.org/ 山东理工大学
- https://pypi.mirrors.ustc.edu.cn/ 中国科学技术大学
python 小技巧
- jupyter中光标移动至函数名右侧(或选中函数名),按住Shift + Tab键弹出帮助文本框。
- 按住Ctrl鼠标移动光标同时选中多处编辑位置,启动多行编辑。
- 使用any判断诸多条件是否至少有一个成立; 使用all函数判断条件全部成立
if any([a <67, b < 89]):
pass
- 使用enumerate函数生成下标和元素对。
s = ['a', 'b']
for i, a in enumerate(s):
pass
- 显示循环进度
- print下标后设置不换行并使用‘\r’回车到行首以避免输出刷屏。
import time
i,n = 0, 100
for i in range(n):
time.sleep(0.1)
if (i+1)%10 == 0: print(i+1, end='\r')
- 使用progress函数
import sys, time
def progress_bar(num, total):
rate = float(num) / total
ratenum = int(100*rate)
r = '\r[{}{}]{}%'.format('*'*ratenum, ' '*(100-ratenum), ratenum)
sys.stdout.write(r)
sys.stdout.flush()
i , n = 0, 100
for i in range(n):
time.sleep(0.1)
progress_bar(i+1, n)
- 使用lambda匿名函数实现简单的函数
L = [1,2,3,"abc", 1.23]
total = sum(filter(lambda x: isinstance(x, (int, float)), L)) # 数字之和
print(total)
- 使用yield生成器收集系列值
def fib(n):
a,b,i = 1,1,1
while i <= n:
i = i + 1
yield a
a, b = b, a+b
print(list(fib(10)))
- 使用python修饰器
from functools import wraps
class logit(object):
def __init__(self, logfile='out.log'):
self.logfile = logfile
def __call__(self, func):
@wraps(func)
def wrapped_function(*args, **kwargs):
log_string = func.__name__ + " was called"
print(log_string)
# 打开logfile并写入
with open(self.logfile, 'a') as opened_file:
# 现在将日志打到指定的文件
opened_file.write(log_string + '\n')
# 现在,发送一个通知
self.notify()
return func(*args, **kwargs)
return wrapped_function
def notify(self):
# logit只打日志,不做别的
print("helloworld")
@logit()
def my_func():
print("mu_func")
my_func()
# my_func was called
# helloworld
# mu_func
another way
from functools import wraps
def logit(logfile='out.log'):
def logging_decorator(func):
@wraps(func)
def wrapped_function(*args, **kwargs):
log_string = func.__name__ + " was called"
print(log_string)
# 打开logfile,并写入内容
with open(logfile, 'a') as opened_file:
# 现在将日志打到指定的logfile
opened_file.write(log_string + '\n')
return func(*args, **kwargs)
return wrapped_function
return logging_decorator
@logit()
def myfunc1():
pass
myfunc1()
# Output: myfunc1 was called
# 现在一个叫做 out.log 的文件出现了,里面的内容就是上面的字符串
@logit(logfile='func2.log')
def myfunc2():
pass
myfunc2()
# Output: myfunc2 was called
# 现在一个叫做 func2.log 的文件出现了,里面的内容就是上面的字符串
python ctype库
from ctypes import *
def convert(s):
i = int(s, 16) # convert from hex to a Python int
cp = pointer(c_int(i)) # make this into a c integer
fp = cast(cp, POINTER(c_float)) # cast the int pointer to a float pointer
return fp.contents.value # dereference the pointer, get the float
print convert("41973333") # returns 1.88999996185302734375E1
python struct库
https://docs.python.org/zh-cn/3/library/struct.html?highlight=struct
网友评论