python类lisp元编程示例,以及高性能python知识

学习python是我的第一门编程语言,诚然,python确实不太像java C 等纯C类语系那样适合大规模的工程开发。
但是确实是一门非常优秀的编程入门语言。
介于C类语系和lisp语言之间的一门lisp方言
让我在短短半年,从零基础小白,到理解控制内存调用,理解代码的本质依然是字符串,只是信息的集合。这里要谢谢师傅,也就是我的老板一路在我每每走入误区抠代码的细节的时候各种隐晦的提示我,让我自己思考。
至于代码是否容易阅读,这里不做要求。
推导式嵌套,lambda表达式,map函数,数组运算,reduce函数,自有函数嵌套,递归,变量修改源码,等等一切能减少代码量,保持代码一行的方法,都是我喜欢的,即使写法不被主流认为是好代码的写法,依然是我最喜欢的python写法
因为在我看来,这些只是思维的技巧练习,并非代码的练习,练习的只是抽象的思维能力,并非计算机语言的能力。
这篇只计一些基础的例子,方便想不起来的时候查看复习重新推导。


#ast抽象语法树的一些奇怪用法,哈哈,直接修改字符串改代码变函数
str1 = '''def coder(code_string):
    newcode = open(new_file_path,'w+')
    for codeline in code_string:
        newcode.writelines(codeline)
    return newcode.close()'''
c = compile(str1,'','exec')
eval(c)
#这一步,函数coder()已经可以用啦,要好好查一下compilc函数


'''ast 语法树分析入门''' 
import ast
expr = """
x = lambda n2:n2*2
"""
expr_ast = ast.parse(expr)
expr_ast
 ast.dump(expr_ast) 

'''python元编程'''
#定义一段函数
fun_c = lambda x : np.arange(x,10,2) ; repr(fun_c(0))
#将函数计算结果变成python解释能够理解的语言
#print('repr(fun_c(0))-->'),\
#print('type(repr(fun_c(0)))-->'),\
type(repr(fun_c(0)))
'''输出:
[0 2 4 6 8]'''
#将代码读取为字符串
t1  = 'fun_c = lambda x: np.arange(x,10) ;'
#改写代码
t2 = ['fun_c('+str(i)+')' for i in range(2)]
#用evel函数将字符串改为代码运行
t3 = eval(t2[0])
#打印结改写后的结果【结果,结果数据类型,数据操作测试】
print(t3,type(t3),t3[0])
#将t3的结果转回解释器读取的形式,又可以进行代码迭代
t4 = repr(t3)
print(t4,type(t4))

hash(t4)
#获取对象的哈希值(int,str,bool,tuple)
id(t4)
#获取对象的内存地址

#用来隐藏不想让人看到的输出过程
def fun_t():
    a = 1
    b = time.sleep(int(2))
    return a,b
a  = fun_t()[1]
b  = fun_t()[0]
print(fun_t())
#输出没有值显示
print(a)
#输出1
print(b)
#没有输出





你可能感兴趣的:(python学习)