python程序开发的这段程序该怎么理解,没看懂

几行没看懂.给个执行流程理解下,该如何解决 - C语言栏目()
几行没看懂.给个执行流程理解下,该如何解决
&&&整理于: 01:05&&&阅读:次
char *match(char *str,char const *want){ while(*want !='\0')
if(*str++ != *want++)
return NULL;
str = bianchenghaoxinku
want = hao调用函数后返回的str是什么?请给出大概执行流程-----参考解决方法-------单步运行
-----参考解决方法-------自己单步调试吧..
-----参考解决方法-------ianchenghaoxinku,因为return就直接返回并退出了!
-----参考解决方法-------字符串完全匹配在str头部查找匹配want,如果找到,返回指向匹配完之后的位置例如& str= &this is a test &;want =&this &那么结果返回&is a test &如果want =&is&return NULL
开发者笔记
软件开发/管理/测试
企业管理/开发
嵌入式开发
高性能开发
编程语言/框架
专题项目/开发/技术
Linux/Unix出处: python 代码自动生成的方法 (代码生成器)
遇到的问题
工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错;而借用python的代码自动生成,可以轻松搞定;
(类比JAVA中的Hibernate自动生成的数据库底层操作代码)
下面介绍使用python字符串替换的方法;
Python字符串替换的几种方法
1. 字符串替换
将需要替换的内容使用格式化符替代,后续补上替换内容;
template = &hello %s , your website
is %s & % (&大CC&,&&)
print(template)
也可使用format函数完成:
template = &hello {0} , your website
is {1} &.format(&大CC&,&&)
print(template)
注:该方法适用于变量少的单行字符串替换;
2. 字符串命名格式化符替换
使用命名格式化符,这样,对于多个相同变量的引用,在后续替换只用申明一次即可;
template = &hello %(name)s ,your name is %(name), your website
is %(message)s& %{&name&:&大CC&,&message&:&&}
print(template)
使用format函数的语法方式:
template = &hello {name} , your name is {name}, your website
is {message} &.format(name=&大CC&,message=&&)
print(template)
注:适用相同变量较多的单行字符串替换;
3.模版方法替换
使用string中的Template方法;
from string import Template
tempTemplate = string.Template(&Hello $name ,your website is $message&)
print(tempTemplate.substitute(name=&大CC&,message=&&))
有了模版方法后,就可以将模版保存到文件单独编辑,在生成的地方替换为需要的变量;
示例:代码生成
这个示例使用以上讲到的第三种方法;
建立一个模版文件,里面需要替换的内容使用${}变量替换;
dao_cpp.template
/// @class ${CLASSNAME}
/// @brief Redis底层接口类 操作${TABLE_NAME}表
/// TABLE ${TABLE_NAME_UPPER}
/// @author dao_cpp_generator.py
/// @generate date: ${GENE_DATE}
/// [注:本文件为自动生成,不需要人为编辑,若有修改,请通过配置py脚本来重新生成.]
#include &${CLASSNAME}.h&
#include &include/${TABLE_NAME}_t.h&
#include &RedisManager.h&
#include &common/LogMacros.h&
#include &common/StringUtility/OtherStringFunc.h&
#include &common/DateTime.h&
namespace redisdao{
#define PRIMARY_KEY &${PRIMER_KEY}&
const string ${CLASSNAME}::TABLE_NAME = &${TABLE_NAME}&;
const string ${CLASSNAME}::TABLE_ID = &${TABLE_ID}&; //在数据库中的表的唯一性标识符
const string ${CLASSNAME}::KEY_SEPARETER = &${KEY_SEPARETER}&;
${CLASSNAME}::${CLASSNAME}(void)
if ( 0 == m_reHandler.EnsureConnect())
m_bRedisConnected =
m_bRedisConnected =
${CLASSNAME}::~${CLASSNAME}(void)
int ${CLASSNAME}::InsertRecord(const string& strVal)
python代码生成程序:
cpp_generator.py
#! /usr/bin/env python
#coding=utf-8
#Redis底层操作类CPP文件生成程序(*RedisDao.cpp)
import os,sys,re,traceback
from datetime import datetime
from string import Template
class DaoCppGenerator:
def generate(self):
tableName = &students&
className = &%sRedisDao& %
tableName.capitalize()
filePath = r&include/%s.cpp& % className
class_file = open(filePath,&w&)
lines = []
template_file = open(r&dao_cpp.template&,&r&)
tmpl = Template(template_file.read())
lines.append(tmpl.substitute(
CLASSNAME = className,
TABLE_NAME = tableName,
TABLE_NAME_UPPER = tableName.upper(),
GENE_DATE = datetime.now().strftime(&%Y-%m-%d %H:%M:%S&),
TABLE_ID = &115&,
EXPIRE_DATE = &06JUN14&))
# 0.将生成的代码写入文件
class_file.writelines(lines)
class_file.close()
print &generate %s over. ~ ~& % filePath
有了这个程序,再配合一堆XML配置文件,就可以轻松生成各种C++程序代码了;
Posted by: 大CC | 25JUL,2014
相关 [python 代码 方法] 推荐:
python 代码自动生成的方法 (代码生成器). 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错;而借用python的代码自动生成,可以轻松搞定;. (类比JAVA中的Hibernate自动生成的数据库底层操作代码). 下面介绍使用python字符串替换的方法;. Python字符串替换的几种方法. 将需要替换的内容使用格式化符替代,后续补上替换内容;. template = &hello %s , your website
is %s & % (&大CC&,&&)
print(template).
- 蓝飞技术部落格
在过去做了不少代码走读,发现了一些代码质量上比较普遍的问题,以下是其中的前五名:. 臃肿的类:类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职责原则”(SRP)的理解. 这些类往往会变得很臃肿,是由于不同的且在功能上缺少关联的方法都放在了相同的类里面. 长方法:方法之所以会变得很长主要是有以下几个原因:. 许多没有关联性的、功能复杂的模块的代码都放在相同的方法内. 这主要是开发者缺乏SRP的概念. 多种条件都放在同一个方法内,这在长方法内经常会发生的. 这是由于缺乏McCabe代码复杂度和SRP的概念的比较. 大量的传参:我经常遇到这几种情况,一些方法跟另一些方法进行交互,或者调用另一些方法的时候传入大量的参数.
作者:Andrey Karpov. 静态代码分析是检查软件源代码中错误和瑕疵的过程. 静态分析可以被视为自动化代码审查过程. 代码审查是检查瑕疵的最古老和最安全的方法. 它校验源代码的连接注意点,并就如何改善提出建议. 这个过程会揭露可能导致将来出现更大错误的代码错误或代码片段. 程序的执行算法应当直接从程序文本和评论中移除. 如果情况并非如此,那么这段代码就需要改良. 代码审查往往能够起到很大的作用,因为程序员通常会忽视自己所编写代码中的错误. 要了解更多有关代码审查方法的信息,推荐看下Steve McConnell编写的《Code Complete》. 连接代码审查方法的唯一劣势在于其超高的成本,你需要定期聚集多个程序员来审查新代码或重新审查应用过推荐修改方法的代码.
- CSDN博客推荐文章
* 将带有html代码的字符串过滤掉其中的html代码. String htmlStr = inputS //含html标签的字符串. String regEx_script = &&[\\s]*?script[^&]*?&[\\s\\S]*?&[\\s]*?\\/[\\s]*?script[\\s]*?&&; //定义script的正则表达式{或&script[^&]*?&[\\s\\S]*?&\\/script& }. String regEx_style = &&[\\s]*?style[^&]*?&[\\s\\S]*?&[\\s]*?\\/[\\s]*?style[\\s]*?&&; //定义style的正则表达式{或&style[^&]*?&[\\s\\S]*?&\\/style& }.
- rex - (jobs, news)
刚才看到一篇《Linear equations solver in 3 lines (Python recipe)》,用3行代码实现了解一元一次方程:. 看上去很强大,于是就解读下代码吧. 首先是第一行,它将等式进行了变形,生成了一个结果为0的算式“x - 2*x + 5*x - 46*(235-24) -( x + 2)”. 第二行用eval来执行这个算式,并将x = 1j代入算式,结果是-9708+3j. 注意x = 1j,所以这个方程就化简为“-9708+3x = 0”了,只要将-(-9708) / 3就能得到x了. 而-9708是这个复数的实部,3是这个复数的虚部,于是结果变成了“-c.real/c.imag”.
- bingo - 博客园新闻频道
  本文是从 Penrose Tiling in Obfuscated Python这篇文章翻译而来.   谁说使用Python你就写不出混乱的代码.   下面这段Python代码是用来生成一些彭罗斯铺砖图案的. 不错,这是段可运行的Python代码:.   当这段代码运行时,它会产生一个的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图.   这个脚本需要Pycairo代码库. 它只能运行在 Python &= 2.7 版本上;Phthon 3并不支持. 最初它是一个很正常的脚本,但经过我的努力,出现了神奇的视觉效果.   彭罗斯铺砖法是个很神奇的东西,它的图案呈不规则周期状分布——你移动角度后都找不到再次重合的图案.
- Ken - (jobs, news)
本文是从 Penrose Tiling in Obfuscated Python 这篇文章翻译而来. 谁说使用Python你就写不出混乱的代码. 下面这段Python代码是用来生成一些彭罗斯铺砖图案的. 不错,这是段可运行的Python代码:. 当这段代码运行时,它会产生一个的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图. 这个脚本需要Pycairo代码库. 它只能运行在Python &= 2.7 版本上;Phthon 3并不支持. 最初它是一个很正常的脚本,但经过我的努力,出现了神奇的视觉效果. 彭罗斯铺砖法是个很神奇的东西,它的图案呈不规则周期状分布——你移动角度后都找不到再次重合的图案.
- ITeye资讯频道
你有没有曾经好奇过Chrome浏览器是如何知道一个网页的语言,并对外国文字的网页提供翻译服务的. 或者,Facebook是如何翻译你朋友用写在你主页上的外国文字. 检测一种语言实际上非常简单,改进了用户体验,而且不需要用户做任何的事情. 我无意中发现的
ActiveState recipe for a language detector in Python这是非常不错的一段程序,但是我决定做点小小的改进. 提供一些背景知识给那些不熟悉自然语言处理或者是程序语言学的人. 如果你是有经验的程序员,你也许可以直接跳到这段文字最下端的程序部分. 如果你从来没有用过python, 我建议你读一下 Zed Shaw 的《 Learn Python the Hard Way》.
- CSDN博客Web前端推荐文章
使用的是官网标准版的eclipse3.9 for javaEE未装任何插件,写JS时卡的简直无法忍受,尝试去掉所有的validate,包括菜单和项目属性中的都无作用,后来在项目根目录..project中发现以下红色行居然Validator都还在,把红色对应的配置段全部删去后,问题解决,编辑JS再也不似蜗牛了.. 作者:bell2008 发表于 9:27:45
原文链接. 阅读:89 评论:0
- 高春辉 - 外刊IT评论
本文是从 Penrose Tiling in Obfuscated Python 这篇文章翻译而来. 谁说使用Python你就写不出混乱的代码. 下面这段Python代码是用来生成一些彭罗斯铺砖图案的. 不错,这是段可运行的Python代码:. 当这段代码运行时,它会产生一个的png格式的彭罗斯铺砖图案,里面包含有大概2212个具有3D浮雕效果的彭罗斯铺砖图. 这个脚本需要Pycairo代码库. 它只能运行在Python &= 2.7 版本上;Phthon 3并不支持. 最初它是一个很正常的脚本,但经过我的努力,出现了神奇的视觉效果. 彭罗斯铺砖法是个很神奇的东西,它的图案呈不规则周期状分布——你移动角度后都找不到再次重合的图案.
是IT社区推荐资讯的索引,它由IT社区成员主动分享的来自各种RSS源的内容组成,每天都有关于IT社区关心的内容索引更新。
ITIndex 刊登的IT社区分享的内容版权属于原作者或网站,ITIndex与分享内容原作者无关。刊登内容谨为网络故障时之索引。}

我要回帖

更多关于 python程序开发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信