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.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...
随机推荐
- [css 实践篇] 解决悬浮的<header> <footer>遮挡内容的处理技巧
我写的实践篇 都是自己在实践项目所遇到的 "拦路虎" 还是很有借鉴的意义的.(实践才是检验真理的唯一标准呀),废话不多说,进去正题 position: fixed 绝对固定底部后会 ...
- java人民币读法转换
实现浮点数转换成人民币读法字符串 编写一个程序,将浮点数转换成人民币读法字符串,例如,将1006.333转换为壹千零陆元叁角叁分. 题意分析: 将浮点数分成整数部分和小数部分,分开处理整数部分和小数部 ...
- selenium + robotframework的运行原理
1.点击ride界面启动用例执行时,首先会调用脚本 2.打开pybot脚本查看内容. 3.打开robot包下面的run文件,我们可以看到信息 run文件内容 程序启动的入口, sys.agv所表达的含 ...
- React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(二)
上一篇杂七杂八说了下express部分的,现在开始进入正题. 接下去的顺序,就是项目从零开始的顺序(思路方向). [actions定义] 如图,目录页,有4部分的内容,所以以下几个actions是需要 ...
- drbd(一):简介和安装
本文目录:1.drbd简介2.drbd工作原理和术语说明 2.1 drbd工作原理 2.2 drbd复制协议模型 2.3 drbd设备的概念 2.4 drbd资源角色 2.5 drbd工作模式 2.6 ...
- 极光征文 | 写写文章就能赢 Filco,岂不美滋滋
由极光社区举办的第二届征文大赛 --「我和极光的那些事儿」又来啦! 在简书平台发布文章并投稿至「我和极光的那些事」专题,只要参与就能 100% 获得京东购物卡,更有机会赢取象征信仰的 Filco 机械 ...
- Struts2——第一个helloworld页面
struts2是一个较为成熟的mvc框架,先看看怎么配置struts2并且产生helloworld页面. 首先从官网下载struts2,http://struts.apache.org/downloa ...
- Beta冲刺第六天
一.昨天的困难 没有困难. 二.今天进度 1.林洋洋:更新申请ip为域名,去除druid数据源统计 2.黄腾达:协作详情中添加成员对话框优化 3.张合胜:修复侧栏菜单mini状态下不能显示问题 三.明 ...
- 接触JS的变量
刚刚接触到js,写的代码都是很简单的,制单的概念也相当少,新学习的就是变量.let和const以及js的数据类型. 变量的内容有五个,我就不一一介绍了,重点在于: 在 JavaScript 中,使用变 ...
- 深度学习之 cnn 进行 CIFAR10 分类
深度学习之 cnn 进行 CIFAR10 分类 import torchvision as tv import torchvision.transforms as transforms from to ...