python自动写代码程序_自动写代码的程序python jinja2

重复写代码太累了,那么是否有自动帮我们写代码的东东呢?

选择一

做成公用组件

选择二

用模板生成代码

选择三

在评论里告诉我:)

在python中有模板引擎Jinja2. 不过一般看到它时都是介绍生成html模板的。

其实它是可以生成任何UTF-8的代码的。

如何生成呢?

# 代码生成器

from jinja2 import Template

# 先生成一个单词

tmpl = '{{ name }}' # 模板

tmp = Template(tmpl) # 载入模板

result = tmp.render(name='mikele') # 输入变量,生成结果

print(result) # mikele

把上面的功能定义成函数

def render(tmpl, *args, **kwds):

'''jinja2 render'''

vars = dict(*args, **kwds)

tmp = Template(tmpl)

return tmp.render(vars).strip()

生成一个列表循环

fruits = ['apple', 'banana']

tmpl_list = """

{% for fruit in fruits %}

{{ fruit }}

{% endfor %}

"""

result = render(tmpl_list, fruits=fruits)

print(result)

apple

banana

在 % 前面加个 - 可以去掉换行符

tmpl_list = """

{% for fruit in fruits -%}

{{ loop.index }}. {{ fruit }}

{% endfor %}

"""

print(render(tmpl_list, fruits=fruits))

apple

banana

生成一个函数

tmpl_fun = """

def {{fun}}():

pass

"""

print(render(tmpl_fun, fun='eat'))

# 结果

def eat():

pass

生成类

tmpl_class = """

class {{ model }}s:

pass

"""

print(render(tmpl_class, model='Blog'))

class Blogs:

pass

导入模块,类...

tmpl_import = """

from person import {{ models|join(', ') }}

"""

print(render(tmpl_import, models=['Teacher', 'Student']))

from person import Teacher, Student

判断

tmpl_if = """

{% if a > 2 %}{{ a }}{% else %}#小于2{% endif %}

"""

print(render(tmpl_if, a=3))

保存代码到程序里 codes.py

def save(data, filename='codes.py'):

with open(filename, 'w') as f:

f.write(data)

save(data=result)

有了这些就可以组合起来自动生成程序了。

如果变量少,可以用一个模板文件。

如果几个模板要拼在一起,就用直接像这样定义模板变量。再定义变量。

暂且介绍到这。。。

更多功能请到 Jinja2 官网查询 Jinja2模板

有什么问题可以留言,或者发我邮箱.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值