网站首页 > 文章中心 > 其它

python半变异函数

作者:小编 更新时间:2023-09-10 13:47:25 浏览量:323人看过

Python实现全角半角转换的方法

Python实现全角半角转换的方法

本文实例讲解了Python实现全角半角转换的方法,相信对于大家的Python学习能够起到一定的参考借鉴价值.如下所示:

python半变异函数-图1

第一段:全角半角转换概述:

而且除空格外,全角/半角按unicode编码排序在顺序上是对应的

所以可以直接通过用+-法来处理非空格数据,对空格单独处理

第二段:全角转半角:

实现代码如下:

"""把字符串全角转半角"""

rstring = ""

for uchar in ustring:

inside_code=ord(uchar)

else:

python半变异函数-图2

inside_code-=0xfee0

rstring += uchar

rstring += unichr(inside_code)

return rstring

第三段:半角转全角:

"""把字符串半角转全角"""

inside_code+=0xfee0

第四段:测试代码:

print a

print b

输出:

感兴趣的朋友可以调试运行一下,相信会有一定的收获.

初学python,感受和C的不同

从开始看Python到现在也有半个多月了,前后看了Python核心编程和Dive

into

下面就是在学习的过程中,在翻阅资料的过程中,总结的一些C和python比较明显的不同之处,有大方向的,也有细节的.肯定没有总结完,比如动态函数,lambda这些,我都懒得往上写了.实际上,作为两种完全不同的语言,下面这些差异只是冰山一角而已.权当抛砖引玉吧,至少应该对和我有相同研究兴趣,正在考虑是否学习另一门语言的朋友有点帮助.此文也算是DIP的学习笔记吧.顺带说一句,要是有朋友了解,可以帮忙推荐一下实战性强的Python教材,语言这东西,不多练手,光比划,是不可能学好的.

学习目的

我的以后的研究方向是嵌入式,显然,C语言是我的主要语言.我不是一个语言爱好者,我以前觉得,对于做研究而不是应用的人来说,了解多门语言,不如精通一门语言.之所以去看python,主要还是因为python更有利于快速开发一些程序,也是因为现在认识到,研究和应用是不能分离的.个人以为,要想在计算机工程的竞争中立足,必须懂C语言.因为真正要做高性能编程,

不可能将机器的体系架构抛到脑后让Python虚拟机(或Java虚拟机等)帮你搞定所有底层.越来越多的CPU

core,越来越恐怖的内存性能瓶颈,对于上层开发人员来说,无所谓,但是对高性能程序开发人员来说,这些是无法透明的.很多应用,还是自己掌控比较有效.这些场合中,汇编和C还是不可替代的.但是,光知道C是不够的,掌握一门面向对象语言,相对更高层的语言,不仅对以后的个人发展有利,也会对自己的技术认识产生帮助.

Python不好,实际上,上层应用,Python比C方便的不是一个层次.

很多人觉得,既然懂C了,那么进一步掌握C++应该是水到渠成,但C++不是C的超集,而我又不喜欢C++的繁琐和巨大,所以才决定看一看Python.我很喜欢Python的优雅与快捷.

语言类型

python半变异函数-图3

和C不一样,Python是一种动态类型语言,又是强类型语言.这个分类怎么理解呢?大概是可以按照下列说明来分类的:

静态类型语言

一种在编译期间就确定数据类型的语言.大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的.Java和 C 是静态类型语言.

动态类型语言

一种在运行期间才去确定数据类型的语言,与静态类型相反.Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候.

强类型语言

一种总是强制类型定义的语言.Java 和 Python 是强制类型定义的.您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串.

弱类型语言

对象机制

具体怎么来理解这个"动态确定变量类型",就要从Python的Object对象机制说起了.Objects(以下称对象)是Python对于数据的抽象,Python中所有的数据,都是由对象或者对象之间的关系表示的,函数是对象,字符串是对象,每个东西都是对象的概念.每一个对象都有三种属性:实体,类型和值.理解实体是理解对象中很重要的一步,实体一旦被创建,那么就一直不会改变,也不会被显式摧毁,同时通常意义来讲,决定对象所支持的操作方式的类型(type,包括number,string,tuple及其他)也不会改变,改变的只可能是它的值.如果要找一个具体点的说明,实体就相当于对象在内存中的地址,是本质存在.而类型和值都只是实体的外在呈现.然后Python提供一些接口让使用者和对象交互,比如id()函数用来获得对象实体的整形表示(实际今天这一节就是地址),type()函数获取其类型.

这个object机制,就是c所不具备的,主要体现在下面几点:

①. 刚才说了,c是一个静态类型语言,我们可以定义int a, char

b等等,但必须是在源代码里面事先规定.比如我们可以在Python里面任意一处直接规定a =

"lk",这样,a的类型就是string,这是在其赋值的时候才决定的,我们无须在代码中明确写出.而在C里面,我们必须显式规定char *a =

"lk",也就是人工事先规定好a的类型

b来判断,但是如果是两个字符串变量a和b,我们就不得不用strcmp来比较了,因为此时,a和b本质上是指向字符串的指针,如果直接还是用==比较,那比较的实际是指针中存储的值——地址.

然后在Python中,和前两者都不一样,由于对象的引入,我们可以用"is"这个运算符来比较两个对象的实体,和具体对象的type就没有关系了,比如你的对象是tuple也好,string也好,甚至class也好,都可以用"is"来比较,本质上就是"对象同一性"的比较,和Java中的==类似,和

C中的pointer比较类似.Python中也有==比较,这个就是值比较了.

由于对象机制的引入,让Python的使用非常灵活,比如我们可以用自省方法来查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行操作.用这种方法,你可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数.

这些操作在C中都是不可想象的.

①.这个语句中,在Python里面引发的,可能是a,b同时指向一个值为1的对象,也可能是分别指向两个值为1的对象.而例如这个语句,c = []; d

= [],那么c和d是肯定指向不同的,新创建的空list的.没完,如果是"c = d =

[]"这个语句呢?此时,c和d又指向了相同的list对象了.这些区别,都是在c中没有的.

列表和数组

分析Python中的list和C中的数组总是很有趣的.相信可能一些朋友和一样,初学列表的时候,都是把它当作是数组来学的.最初对于list和数组区别的定性,主要是集中在两点.首先,list可以包含很多不同的数据类型,比如

["this", 1, "is", "an", "array"]

这个List,如果放在C中,其实是一个字符串数组,相当于二维的了.

其次呢,list有很多方法,其本身就是一个对象,这个和C的单纯数组是不同的.对于List的操作很多样,因为有方法也有重载的运算符.也带来一些问题,比如下面这个例子:

加入我们要产生一个多维列表,用下面这个语句

结果,A的值会是

[[None, None], [None, None], [None, None]]

初一看没问题,典型的二维数组形式的列表.好,现在我们想修改第一个None的值,用语句

现在我们再来看看A的值:

所以,还是一直强调的,越复杂的东西,越灵活,也越容易出错.

代码优化

C是一个很简单的语言,当我们考虑优化的时候,通常想得也很简单,比如系统级调用越少越好(缓冲区机制),消除循环的低效率和不必要的系统引用,等等,其实主要都是基于系统和硬件细节考虑的.而Python就完全不一样了,当然上面说的这些优化形式,对于Python仍然是实用的,但由于

Python的语法形式千差万别,库和模块多种多样,所以对于语言本身而言,就有很多值得注意的优化要点,举几个例子吧.

而更加优化和优美的版本是

所以说,以优化为评判标准,如果说C是短小精悍,Python就是博大精深.

include和import

在C语言中的include非常简单,因为形式单一,意义明确,当你需要用到外部函数等资源时,就用include.而Python中有一个相似的机制,就是import.乍一看,这两个家伙挺像的,不都是我们要用外部资源(最常见的就是函数或者模块(Python))时就用这个来指明么?其实不然,两者的处理机制本质区别在于,C中的include是用于告诉预处理器,这个include指定的文件的内容,你都给我当作在本地源文件中出现过.而

import呢,不是简单的将后面的内容*直接*插入到本地里面去,这玩意更加灵活.事实上,几乎所有类似的机制,Python都比C灵活.这里不是说C不好,C很简练,我其实更喜欢C.

简单说说这个灵活性.import在python中有三种形式,import X, from X import *( or a,b,c......), X =

__import__('x').最常用的是第二种,因为比较方便,不像第一种那样老是用X.module来调用模块.from X import

*只是import那些public的module(一般都是不以__命名的模块),也可以指定a,b,c来import.

什么时候用哪一种形式呢?应该说,在大多数的模块文档里,都会明确告诉你应该用哪种形式.如果需要用到很多对象,那么from X import

*可能更合适一些,但是,就目前来看,大多数第三方Python库都不推荐使用from modulename import *

这种格式.这样做会使引入者的namespace混乱.很多人甚至对于那些专门设计用于这种模式的模块(包括Tkinter,

threading和matplot)都不采用这种方式.而如果你仅仅需要某个对象类a,那么用from X import a比用import

X.a更好,因为以后你调用a的函数直接用a.function()既可以了,不用加X.

如果你连自己希望import的模块都不知道怎么办?请注意,此时Python的优势就体现出来了,我们可以用

__import__(module)来调用module,其中这个module是字符串,这样,可以在运行时再决定,你到底要调用什么module.举个例子:

def classFromModule (module, Name):

mod = __import__ (module)

return getattr (mod, Name)

这里,定义了一个函数classFromModule,你可以在代码的任何时候调用它,

o = classFromModule (ModuleOfTheClass, NameOfTheAttribute)()

只需要传入字符串形式的你希望import的模块ModuleOfTheClass和其中属性的名字NameOfTheAttribute(当然可以是数据也可以是方法),就能调用了,这个名字字符串不用事先指定,而是根据当时运行的情况来判断.

顺带说一句,Python中import的顺序也有默认规定,这个和C中的include有点类似,因为我们一般都是先include系统文件,再

include自己的头文件(而且还有和""的区别).Python中呢,一般应该按照以下顺序import模块:

① 标准库模块 — 如 sys, os, getopt 等

全局变量

这里谈全局变量呢,倒不是说Python和c的全局变量概念不同,他们的概念是相同的.只是在使用机制上,是有一些差异的.举个例子:

– module.py –

globalvar = 1

def func():

print globalvar

# This makes someglobal readonly,

# any attempt to write to someglobal

# would create a new local variable.

global globalvar

# this allows you to manipulate the global

# variable

在 func这个函数中,globalvar是只读的.如果你使用了globalvar =

globalvar是global的,那么此时的更改就直接在全局变量上生效.

很明显这和c中的使用机制是不一样的,在c中,我们只要在函数外的全局区域申明了变量,就可以在函数中直接对其操作,不用还申明一个global.

Filed in c,code,python and

tagged c, python

python里a[1]=10是什么意思

int a = 10;

这里的 int a 是变量的类型声明.这里的含义是,我想要一个变量,它的名字是 a,它是一个整数类型的变量.

后半部分, = 10,这一部分是赋值操作.后面半部分的 10 不是数字 10,而叫做 literal.很多编程语言都有不同的 numeric literal 格式可供使用.比如:

int a = 10; int b = 0x_0000_0010; int c = 0b_0000000_00000000_00000000_00000010; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);

15个Python入门小程序,你都知道哪些

将一个正整数的个位数,以及除个位数外的部分分离.需要用到 模(取余数) 运算符 % ,和 整除 运算符 //

输入一个数字,判断基数还是偶数,需要 模 运算和 if ... else 结构

之前做过华氏度转摄氏度,现在通过 分支结构 实现二者互转.

输入三个边长度,判断是否构成三角形. 构成三角形的条件:两边之和大于第三边 .

输入成绩分数,输出分数对应的等级.

某企业的奖金根据销售利润按照如下规则计算提成.输入销售利润,计算奖金.

程序随机生成一个正整数,用户来猜,程序根据猜的大小给出相应的提示.最后,输出用户猜了多少次才猜中.

用程序实现石头剪刀布 游戏 .

字典的key是姓名,value是身高,现在需要按照身高对字典重新排序.

将二元二次函数封装在函数中,方便调用

初学python的小伙伴注意哦~不要只依赖于教程,而忽视实操的能力.不然,是很难有进步的.可以多动动手,尝试一下,积累经验.

以上就是土嘎嘎小编为大家整理的python半变异函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章