谈我所认识的python

(整期优先)网络出版时间:2021-08-26
/ 2

谈我所认识的 python

罗帅

黑龙江工业学院 黑龙江省鸡西市 158100

摘要:

作为一门极有潜力的高级语言,Python 逐渐在编程上发挥着越来越大的作用。这学期,通过对python基础知识的学习,对python有了一定的认识。同时和已经学习的高级语言C和C++有了一定的对比,以及我对未来python的学习方向。本文仅仅是个人的观点和看法,水平有限,如有出错之处,还请谅解。


一、关于python编程的特点以及编程过程中的心得

Python给我最一开始的印象便是简单明了,全部的变量都不用定义,想用就用,这给了编程者很大的自由发挥空间。如a=3,即可同时完成变量的定义和赋值,对于简化程序的代码,起到了很大的作用!

在字符串的处理上,我们在python中感受到了简单快捷的魅力。可以轻松分割任意一段字符串, 如使用string[0:5], 就可以轻松地分割出string 字符串中的五个字符。因为分割区间的任意性,字符串处理起来也就得心应手了。

库很多,博大精深,这样形容python最恰当不过了。正因为其强大的库,让编程不再艰难。我们只要调用库中的函数,而对于函数的具体实现,没有特殊需求,我们无需探究。这无疑是编码者的福音。

由于python输出机制自带换行机制,因此如不需要换行,要在语句的后面加上逗号,刚刚编程时,有时会遇到问题。

在函数的使用上,由于python 简化了使用方法。在函数的定义上,不需要给出相应的数据类型,形参表很简明。在返回值的时候,也更加的灵活,具有很强的操作性。其它基本的使用方法与其它语言类似,这给编码者最快的速度适应这门语言。

列表的使用方便了数据的批量处理。印象最深刻的就是list.reverse(,直接就可以将列表的数据逆置。字典,能够很好的处理任意长度、混合类型键值对的能力。在统计一段文章中的词频,和某段话中字母的频率时,很方便。配合相关的文件操作,可以对文本文件进行数据的统计。

图形编程也是python的一大亮点。 通过graphical库的使用,可以很方便的实现图形界面的编程。最让我印象深刻的是在控制窗口的颜色函数setBackground(color)中,可以使用已有的颜色作为参数。也可以通过改变rg6b..))的参数进而实现各种新颜色的体现。


二、python和其它高级语言的一些区别

(1)关于变量。

在C、C++中,变量的使用需要提前定义。特别是在C语言中,变量必须集中在前面定义,这给编程带来了诸多的不便。虽然在C++中,变量可以随用随定义,但终究是程序员必做的一件事,当变量的使用数量达到一定的量的时候,会造成某些程度上的不方便。Python 让我们眼前一亮,想用就用,随心所欲,有了一种自由的感觉。此外,在变量的内存理解上,python, 也有不同之处。在C中,变量在定义后,由系统分配相应大小的内存,从而进行变量的相关操作。而在后者,则有指针的味道,有指向值的感觉。在内存机制上,python 语言与其它语言有着巨大的差别。


(2)关于循环的使用。

在C/C++中,for循环拥有强大的功能,可以实现各类循环,几乎能满足所有程序的需求。但python在for循环上,却略显逊色,其功能不再那么强大。Python的for循环主要依靠关键词in来实现的。也正是因为这样,其具有特色性。此时for循环可以有两种不同的实现方式。一种是单纯控制循环次数。比如for i in range(10), 此处控制循环进行10次,i仅仅起到控制次数的作用,这一-作用与前者语言极为相似;二是中钟,也正是python所具有的特色。在类似于字符串的处理上,有foriinsting,此时的i具有遍历字符串的功能,对于底下循环语句的实现,有极大的方便。在其它的循环上,如while条件循环,等,其用法我认为没有很大的区别。


(3)面向对象编程。

python语言是一种既支持面向过程也支持面向对象的程序设计语言。因此,面向对象的程序设计方法在python中也有着很好的体现。在C++中,对象是极其重要的,以对象为核心的程序是C++的主力军。类,是面向对象的具体表现。在前者语言中,类中主要包括private,public,protected,等成员类型,而python中则不需要明确指出。在构造函数上,前者语言用与类名相同的名字,分为无参数和有参数的构造函数,并且系统也会提供相应的默认构造函数,当然是在编程者未提供相应构造函数的时候。在python中构造函数的定义形式为def_ _init__ (sel,,), 此处值得注意的是,下划线是由两个组成,容易造成编程者的忽视。这里的self可以当成this指针来理解。


(4)关于字符串的处理。

Python对于字符串的处理给程序员带来了极大的便利。在之前的C系列编程中,只能用字符类数组对字符串进行相应的操作,步骤相对比较繁琐,而且在编程的过程中极其容易出错。类似于char a[]的样式,在python中不复存在。在创建一个字符串的时候,用s=’’,即可完成一个空字符串的创建。接着将相应的内容进行添加的时候,直接用s=s+’string’,即可。在编写一个字符串逆序函数的时候,我深有体会。受之前C语言的影响,我想用类似于指针的方式进行元素的交换。后来恍然大悟,直接新建立一个空字符串,在将原字符串从后面依次加入到新的空字符串中即可。简单的思维,简洁的代码,就轻松的实现了同样的功能。我深深被python所打动


(5)全动态性

python是全动态性的,可以在运行时自己修改自己的代码,java只能通过变通方法实现;python虚拟机没有java强,java虚拟机是java的核心;python有很多程序用的是面向过程设计方法,很多概念是从c语言过来的,而java是为了实现没有指针的c++,主要采用面向对象的设计方法等。


(6)关于批量数据处理。

众所周知,在C\C++中,对批量数据的处理,主要依靠的是相应的数组。比如定义int a[3], char a[3], double a[3], 等,可以看到,在数组的定义时,需要加上相应的数据类型,以及定义数组的长度。也正是由于这样,数组却显得有些死板,不够灵活。这是因为系统需要分配相应的空间给已经定义的数组,这是由其内存机制所决定的。因此,独特的内存机制造就了python 强大的灵活性。之前的这些数组中只能存放单一数据类型, 并且一般其长度是有限的。而对于链表的使用,我认为也不是很方便,至少我用起来感觉非常麻烦。宁愿使用大一点的数组进行数据的存放,浪费一点内存空间,我都不愿意使用动态数组或者是链表进行相应的操作。而在python的学习中,我看到了曙光。列表,一个崭新的名词出现在我的眼前。直接使用,无需定义大小等。


三、个人学习方向

笔者对网络比较感兴趣。事实上,算法确实很有用,是程序的核心,但我更喜欢具有直接实际意义的事物,因此我比较倾向于网络方面。而我感觉python在网络方面的应用是非常巨大的,它的功能也是很强大的。举例说明如下:

(1)Colorama库

还有Python的Colorama模块,可以跨多终端,显示字体不同的颜色和背景,只需要导入colorama模块即可,不用再每次都像linux一样指定颜色;Fore是针对字体颜色,Back是针对字体背景颜色,Style是针对字体格式

Fore:BLACKRED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,WHITE,RESET.
Back:BLACK,RED,GREEN,YELLOW,BLUE,MAGENTA,CYAN,WHITE,RESET.
Style:DIM,NORMAL,BRIGHT,RESET_ALL
 
下面的注意,颜色RED,GREEN都需要大写,先指定是颜色和样式是针对字体还是字体背景,然后再添加颜色,颜色就是英文单词指定的颜色

from colorama import Fore, Back, Style
print(Fore.RED + 'some red text')
print(Back.GREEN + 'and with a green background')
print(Style.DIM + 'and in dim text')
print(Style.RESET_ALL)
print('back to normal now')
print(Style.RESET_ALL)
Init关键字参数:
init()接受一些* * kwargs覆盖缺省行为,
autoreset是自动恢复到默认颜色
init(autoreset = False):
autoreset设置为True,最后一行输出,已经回归到默认字体颜色和背景
from colorama import init,Fore
init(autoreset=True)
print (Fore.RED + "welcome to python !!")
print ("automatically back to default color again")


到现在为止,接触colorama;socket;prttytable库,懂的知识并不是很多,但还是感觉到了python的强大之处。在接下来的时间里,我会继续沿着这个方向努力学习,相信python一定会给我带来许许多多的快乐!


作者简介:姓名:罗帅(出生年份,月:1997.2.17),性别:男,民族:汉,籍贯:贵州省黔西南州兴仁市,职务/职称,学历:专科,研究方向:Python。邮编:兴仁市562300