Python语言本身就是一门简单的语言,入门非常容易。

机器学习中用到的Python(语法)相对就更简单了。

本文从机器学习的视角来看需要具备的Python基础。

我们的目标是~~

没有蛀牙...

针对一个程序员(如Java程序员),在1个小时内学会足够机器学习中使用到的Python语法。

1. Python简介

Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。

Guido van Rossum

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。

Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

2. Python基础

以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。

缩进有利有弊。好处是强迫你写出格式化的代码,但没有规定缩进是几个空格还是Tab。按照约定俗成的管理,应该始终坚持使用4个空格的缩进。

缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码。

缩进的坏处就是“复制-粘贴”功能失效了,这是最坑爹的地方。当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。此外,IDE很难像格式化Java代码那样格式化Python代码。

最后,请务必注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错。

2.1 数据类型

计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,有六个标准的数据类型:

Numbers(数字):数字数据类型用于存储数值。

pi = 3.14

String(字符串):由数字、字母、下划线组成的一串字符。

str = "阿光最帅!"

List(列表):列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

list = [ 'kevin', 998 , 13.14, 'roy', 666 ]

Tuple(元组):类似于List(列表),但是不能二次赋值,相当于只读列表。

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )

Sets(集合):是一个无序不重复元素的序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}

superman = set(['Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'])

Dictionary(字典):字典是无序的对象集合,通过键来存取的元素。字典由索引(key)和它对应的值(value)组成。

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

2.2 条件判断

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。

Python中使用if、elif 和 else 来完成条件判断。

age = 3

if age >= 18:

print('adult')

elif age >= 6:

print('teenager')

else:

print('kid')

2.3 循环

循环语句允许我们执行一个语句或语句组多次。

Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来。

names = ['Michael', 'Bob', 'Tracy']

for name in names:

print(name)

第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。

sum = 0

n = 99

while n > 0:

sum = sum + n

n = n - 2

print(sum)

break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。

2.4 with语句

有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。在这个过程中,你还需要处理很多异常。

try:

f = open('xxx')

except:

print 'fail to open'

exit(-1)

try:

do something

except:

do something

finally:

f.close()

虽然这段代码运行良好,但是太冗长了。

这时候就是with一展身手的时候了。除了有更优雅的语法,with还可以很好的处理上下文环境产生的异常。

下面是with版本的代码:

with open("/tmp/foo.txt") as file:

data = file.read()

3. 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

Python 定义函数使用 def 关键字。

# 计算面积函数

def area(width, height):

return width * height

def print_welcome(name):

print("Welcome", name)

print_welcome("Runoob")

w = 4

h = 5

print("width =", w, " height =", h, " area =", area(w, h))

4. 模块

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

使用模块有什么好处?

最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

#!/usr/bin/python

# -*- coding:utf-8 -*-

import numpy as np

import pandas as pd

from sklearn.linear_model import LogisticRegression

from sklearn import preprocessing

使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。

5. 面向对象编程

面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

5.1 类和实例

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

class Student(object):

def __init__(self, name, score):

self.name = name

self.score = score

def print_score(self):

print('%s: %s' % (self.name, self.score))

def get_grade(self):

if self.score >= 90:

return 'A'

elif self.score >= 60:

return 'B'

else:

return 'C'

lisa = Student('Lisa', 99)

bart = Student('Bart', 59)

print(lisa.name, lisa.get_grade())

print(bart.name, bart.get_grade())

5.2 访问限制

在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。

class Student(object):

def __init__(self, name, score):

self.__name = name

self.__score = score

def print_score(self):

print('%s: %s' % (self.__name, self.__score))

def get_name(self):

return self.__name

def get_score(self):

return self.__score

def set_score(self, score):

self.__score = score

需要注意的是,在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__、__score__这样的变量名。

6. 总结

使用上述Python基本语法就能完成大部分的机器学习编程了。

本文绝大部分参考了下面两篇教程:

我只是根据机器学习入门需要的Python基础进行了大幅简化,能够让智慧如你的程序员在半个小时之内入门Python。

我只是教程的搬运工。

Kevin 2018年4月23日,于成都,为AI能力中心准备课件。

python的快速入门-Python快速入门相关推荐

  1. 图文并茂!60页PPT《快速入门python数据分析路线》(附链接)

    一个月不走弯路快速入门学python和python数据分析路线,呕心沥血加班加点做了2天,一共63页,该课件讲的都是路线中的核心知识,今天把该PPT分享给大家,能根据该课件提到的知识有针对性的学,做到 ...

  2. python爬虫入门教程--快速理解HTTP协议(一)

    http协议是互联网里面最重要,最基础的协议之一,我们的爬虫需要经常和http协议打交道.下面这篇文章主要给大家介绍了关于python爬虫入门之快速理解HTTP协议的相关资料,文中介绍的非常详细,需要 ...

  3. python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  4. 十天快速入门Python

    课程导学 001 课程定位和目标 002 课程导学 第一部分 Python快速入门 第1天 Python基本语法元素 003 Python基本语法元素 004 程序设计基本方法 005 Python开 ...

  5. python教程是什么课文_新手快速入门Python必看这篇文章

    Python是一门多种用途的编程语言,时常在扮演脚本语言的角色.一般来说,Python可定义为面向对象语的脚本语言:这个定义把面向对象的支持和全面的面向脚本语言的角色融合在一起.事实上,人们往往以&q ...

  6. python做电脑软件-程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  7. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门

    原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...

  8. python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  9. python编程基础语法-Python编程基础语法快速入门

    1. 课程咨询加老师助理微信:助理1微信: chenjinglei88 ,助理2微信: omf6757 2. 决定购买并想得到陈敬雷老师亲自指导(课程或自己项目难题均可)加老师微信: chenjing ...

  10. 零基础编程入门python视频-Python编程零基础小白快速入门完整全系列精品课

    1. 课程咨询加老师助理微信:助理1微信: chenjinglei88 ,助理2微信: omf6757 2. 决定购买并想得到陈敬雷老师亲自指导(课程或自己项目难题均可)加老师微信: chenjing ...

最新文章

  1. 浙江大学计算机与机械工程,中国26所“机械工程”大学经调整、合并,浙大、西交、同济升级...
  2. python的循环控制结构是什么_7.Python控制和循环结构
  3. Axure经典案例下载(Axure高保真智能监控系统人脸识抓拍别预警系统交互组件机动车辆抓拍管理后台)
  4. 二叉树的创建及遍历_递归遍历_非递归遍历
  5. 太真实了!工业界AI项目落地血泪教训总结
  6. catia怎么添加毛坯_CATIA教程
  7. 在ubuntu20.04中安装MATLAB时常见问题及解决方法
  8. 代码的坏味道之十七 :Inappropriate Intimacy(狎昵关系)
  9. office2007 ppt制作与应用母板
  10. MPLS LDP基础
  11. Photoshop液化工具塑造完美的脸型
  12. 网安刮起东风:360、深信服决战智能化
  13. docker安装kong和konga并简单使用
  14. 想做自媒体副业,有什么领域可推荐?
  15. STM32系列(HAL库)——F103C8T6通过MFRC522、RFID射频卡、门禁卡模块读取卡片ID(二)
  16. CSDN-专业IT技术社区
  17. 对Spring loC DI的理解
  18. ElasticSearch - 简介
  19. 2017大同市职称计算机,2017年职称计算机考试计划
  20. SSRS 2012 管理图表 -- 柏拉图

热门文章

  1. 测试数据精准对比的思考
  2. HTTP Error 503. The service is unavailable.
  3. VC MFC程序,在About对话框中获取并显示程序的版本号
  4. HEU 4048 Picking Balls
  5. nginx实现请求的负载均衡 + keepalived实现nginx的高可用
  6. JavaScript命名规范与变量声明的注意事项
  7. java字符串类型常量拼接与变量拼接的区别
  8. ZBrush中如何做不同图案的遮罩
  9. http学习笔记(三):报文
  10. 内存管理(链表,指针操作,繁琐)