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.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...
随机推荐
- Linux运维主流架构简单剖析
随着IT运维的不断发展,尤其的Linux的飞速发展,越来越多的企业开始使用Linux操作系统平台,例如CentOS.RedHat.Ubuntu.Fedora等等,成千上亿个网站涌现在当今互联网,互联网 ...
- 浅谈 JSON.stringify 方法
一.前言 最近项目中,遇到需要将对象转换成字符串进行传递,上次写过一篇文章关于json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值.当时主要是用在有时候处理字符串和 ...
- Pla
Pla(jdoj1006) 题目大意:给你n个矩形,并排放在一起,你的目的是将所有的矩形全部染色.你每次染的形状为一个矩形,问:最少需要染多少次? 注释:n<=10^6,wi , hi<= ...
- 关于HTML使用ComDlg ActiveX 无法弹出相应对话框的问题1
最近发现,开发的Web应用在客户的某些IE(8,9,11)中弹出不了Windows的字体对话框. 通过 F12 跟踪,错误代码是“-2146827850”,错误信息是“ 对象不支持ShowFont属性 ...
- IDEA2017注册码
1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...
- 2017-2018-1 1623 bug终结者 冲刺004
bug终结者 冲刺004 by 20162322 朱娅霖 整体连接 简要说明 目前,我们已经完成了欢迎界面,主菜单界面,排行榜界面,选项界面,胜利界面,地板类.小人类.墙体类.箱子类和虚拟按键类. 主 ...
- HTML5的新的结构元素介绍
HTML5的新的结构元素介绍 一.HTML5与HTML4的区别 1. 取消了一些过时的HTML4的标签 其中包括纯粹显示效果的标记,如<font>和<center>,它们已经被 ...
- python 操作MongoDB
安装MongoDB 启动数据库:安装完成指定数据库存放路径 mongod.exe --dbpath c:\data\db进入目录后运行mongo.exe 成功 创建数据库 > use mydb ...
- TOTP算法 基于时间的一次性密码
/** Copyright (c) 2011 IETF Trust and the persons identified as authors of the code. All rights rese ...
- Hibernate之深入Hibernate的映射文件
这周周末 要把hibernate的映射文件搞定 .. 1.映射文件的主结构 主要结构 :根元素为<hibernate-mapping ></hibernate-mapping> ...