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)
#没有输出





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值