Python 学习开篇
前言
最近看到一张图,有点意思:

蓝色是(成长+付出),红色是回报。有多久可以达到这个红心,要看我们自已的努力,付出了多少专注与汗水。我想说的是,水平轴并不是时间,如果不能坚持努力,可能永远都到不了那个红心。
背景
最近领导说,之前写了一两个月的 shell 脚本要全部改成 Python 脚本。给我们周五一天时间学习 Python 语法,然后下个周一要投入到工作中。没办法,周末豁出去了。好在 Android 开发,需要用到的 Python 知识点不是太多,加上有面向对象思想的概念,学习起来难度不算十分大。本文主要记录一下 Python 的一些需要注意的语法知识。
Python 运行方式
安装完Python环境之后,运行 Python 的方式主要有:
- 打开控制台,执行
python,出现如下界面:

出现提示符>>>就表示已经在python 交互环境之中了,接下
来就可以输入python语句并执行了。

输入exit()退出Python交互环境。
- 新建文件,将文件保存后缀为 .py ,然后在控制台中输入 python xxx.py

执行结果如下:

两种方式的区别:在交互式环境下,输入python语句,立即执行。运行Python文件,实际上是将多条语句一次性全部执行。
Python 变量与常量
Python与java不同,定义变量不需要指明变量的明确类型,甚至都不需要像 JavaScript 那样用 Var 来声明。比如定义一个 Str 类型的'name' 变量,并初始化为 'sharpcj',像下面这样就可以了:
name = sharpcj
Python 会根据你的赋值自动判断变量的类型。
Python 中定义常量,把变量名全部大写,但是这样的变量依然可以改变其值。所以,Python 没有严格意义上的常量,这只是一种约定俗成的规范。
Python 模块和包
引入模块
所谓的模块,就类似是 java 中的类,我们不可能把所有的代码都写在一个文件里吧,使用模块最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。举个例子:编写一个程序,等待 3 秒,这是我们可以引入 time 模块,然后调用 time 的 sleep 方法。
文件内容如下:

我们通过 import time引入 time 包,执行结果是,先输出 hello,world!,等待 3 秒之后,再输出Welcome to Python!,如果不引入 time 包,则会报如下错误:

包
如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package),说白了,就是将同名的模块放在不同的目录下面,这还没完,还需要在该目录下面建__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany。
目录可以有多层,引入的时类似from dir1.dir2.xxx import xxx的语句。
Python 的面向对象
在Python中,通过 class定义类。 例如定义类 student,

类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用object类,Python 中所有的类最终都会继承自 object 类。
Python中定义方法用 def 关键字。__init__ 是一个特殊的方法,可以绑定属性。如:
class Student(object) :
def __init__(self, name, age) :
self.name = name
self.score = age
__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在 __init__ 方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
有了 __init__ 方法,在创建实例的时候,就不能传入空的参数了,必须传入与 __init__ 方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去:
stu = Student ('sharpcj',25)
如果要让内部属性不被外部访问,只需把属性的名称以两个下划线__开头命名,在Python中,实例的变量名如果以__开头,就变成了一个私有变量,只有内部可以访问,外部不能访问。外部要访问,则添加相应的方法即可。
class Student(object) :
def __init__(self, name, age):
self.__name = name
self.__age = age
def get_name(self):
return self.__name
def get_age(self):
return self.__age
def set_name(self, name):
self.__name = name
def set_score(self, age):
self.__age = age
在Python中,变量名类似 __xxx__ 的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用 __name__ 、 __age__ 这样的变量名。
有些时候,你会看到以一个下划线开头的实例变量名,比如 _name ,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。
双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是。不能直接访问__name是因为Python解释器对外把 __name变 量改成了 _Student__name,所以,仍然可以通过 _Student__name 来访问 __name 变量。
Python 学习开篇的更多相关文章
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Python学习日记(一):拜见小主——Python
近日学习Python,特将学习过程及一点心得记录于此. 由于之前做过一个Java爬虫的项目,虽然很长时间没有碰过爬虫,但是小郭同学有一颗不死的爬虫心,哈哈.最近在互联网上找一些电影的时候,有很多电影只 ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- Python 学习小结
python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- Python学习记录day6
title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...
- Python学习记录day5
title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...
随机推荐
- ngix_http_stub_status_module
1.ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息.默认情况下这个模块是不被编译进来的,所以在编译 Ngin ...
- java.lang的详细解读
软件包 java.lang 提供java编程语言实现程序设计的基础类 接口摘要 1> appendable 提供被添加char序列和值的对象 2>charSquence char值 ...
- 修改GeoJson的网址
http://geojson.io 可以打开自己的json 然后修改
- 打印十字图 JAVA 递归实现
这个是我自己想的,头疼了一个下午,不过还好.做出来了.在网上找这道题但没有找到用递归的做法. /*递归思想实现 * 标题:打印十字图 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可 ...
- 极光征文 | 写写文章就能赢 Filco,岂不美滋滋
由极光社区举办的第二届征文大赛 --「我和极光的那些事儿」又来啦! 在简书平台发布文章并投稿至「我和极光的那些事」专题,只要参与就能 100% 获得京东购物卡,更有机会赢取象征信仰的 Filco 机械 ...
- 听翁恺老师mooc笔记(11)--结构和函数
结构作为函数参数: 声明了一个结构就有了一种自定义的数据类型,这个数据类型和int.float.double一样,int等基本类型可以作为函数的参数,那么这种个自定义的结构类型也应该可以作为函数参数, ...
- 2017-2018-1 Java演绎法 第二周 作业
团队任务:讨论Android上的游戏软件 参考现代软件工程 第一章 [概论]练习与讨论: 软件有很多种,也有各种分类办法,本次团队任务是讨论选取Android上的一个游戏软件,考虑到每位组员接触的游戏 ...
- Beta版本展示博客
1 团队介绍 团队组成: 齐爽爽(258)个人博客:http://www.cnblogs.com/shuangshuangblog/ 马帅(248)个人博客:http://www.cnblogs.co ...
- Syabse数据库无法启动的解决方案
在探讨本问题之前,首先要为大家解释一下Syabse数据库本身.Syabse数据库应用和本身的架构相对而言都相对比较复杂,多数技术人员及公司对Sybase数据库底层结构和运行机制也处于并非完全了解的阶段 ...
- Windows 的Apache支持SSI配置
配置SSI什么是shtml? 使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或 ...