python基础教程 10-11例子如何执行

作者&投稿:巧修 (若有异议请与网页底部的电邮联系)
一个python基础教程的第一章,首先讲到了准备工作,就是怎么装python其中第五、六条我实在不懂,求教~

简答:
terminal,中文翻译为 终端;
可以简单立即为:
1. Windows下面的cmd:
不了解的自己去看:
crifan Windows的命令行工具: cmd

2. Linux类系统下面的Terminal
就是一个叫做Terminal的软件。
供你输入命令,执行命令,执行程序的那个界面。
等价于Windows中的cmd

详解:
早就帮你们写好教程了,需要的自己去看:
【整理】【多图详解】如何在Windows下开发Python:在cmd下运行Python脚本,如何使用Python Shell(command line模式和GUI模式),如何使用Python IDE

(此处不给贴地址,请自己用google搜标题,即可找到帖子地址)

你好,学习Python编程语言,是大家走入编程世界的最理想选择。无论是学习任何一门语言,基础知识,就是基础功非常的重要,找一个有丰富编程经验的老师或者师兄带着你会少走很多弯路, 你的进步速度也会快很多,无论我们学习的目的是什么,不得不说Python真的是一门值得你付出时间去学习的优秀编程语言。在选择培训时一定要多方面对比教学,师资,项目,就业等,慎重选择。

10. 模块相关

Python的标准安装包包括一组模块,称为标准库(standard library)。

10.1 模块

10.1.1 模块是程序

# hello.pyprint "Hello, world!"# 保存放在C:\python# 告诉解释器在哪里寻找模块>>> import sys>>> sys.path.append('c:/python')# 这样,解释器除了从默认的目录中寻找之外,还需要从目录c:\python中寻找模块>>> import hello
Hello, world!123456789101112

导入模块多次和导入一次的效果是一样的。如果坚持重新载入模块,可以使用内建的reload函数。

10.1.2 模块用于定义

在模块中定义函数

# hello2.pydef hello():
print "Hello, world# 使用import hello2
hello2.hello()1234567

在模块中增加测试代码

为 “告知” 模块本身是作为程序运行还是导入到其他程序,需要使用__name__变量:

# hello4.pydef hello():
print "Hello, world!"def test():
hello()if __name__ == '__main__': test()123456789

10.1.3 让模块可用

将模块放置在正确位置

# 下面命令列出的路径都可以放置,但site-packages目录是最佳选择>>> import sys, pprint>>> pprint.pprint(sys.path)123

告诉编译器去哪里找

除了编辑sys.path外,更通用的方法是设置环境变量PYTHONPATH

10.1.4 包

当模块存储在文件中时(扩展名.py),包就是模块所在的目录。为了让Python将其作为包对待,它必须包含一个命名为__init__py的文件(模块)。如果将它作为普通模块导入的话,文件的内容就是包的内容。

vim constants/__init__.py

PI=3.14# 别的地方引用import constantsprint constants.PI1234567

10.2 探究模块

10.2.1 模块中有什么

使用dir

查看模块包含的内容,它会将对象(以及模块的所有函数、类、变量等)的所有特性列出。

# 导入模块
import copy# 列表推导式是个包含dir(copy)中所有不以下划线开头的名字的列表。
[n for n in dir(copy)] if not n.startwith('_')]12345

__all__变量

这个变量包含一个列表,该列表与上一节的列表类似。

copy.__all__1

它定义了模块的共有接口,在编写模块的时候,像设置__all__这样的技术是相当有用的。

__all__ = ["Error", "copy", "deepcopy"]1

10.2.2 用help获取帮助

使用help函数,获得帮助文本。

help(copy.copy)1

10.2.3 文档

参考

10.2.4 使用源代码

方案一:检查sys.path,然后自己找。

方案二:检查模块的__file__属性

10.3 标准库

10.3.1 sys

sys这个模块能够访问与Python解释器联系紧密的变量和函数。部分重要函数和变量如下:

函数/变量

描述

argv    命令行参数,包括传递到Python解释器的参数,脚本名称    

exit([arg])    退出当前的程序,可选参数为给定的返回值或错误信息    

modules    映射模块名字到载入模块的字典    

path    查找模块所在目录的目录名列表    

platform    类似sunos5或win32的平台标识符    

stdin    标准输入流——一个类文件(file-like)对象    

stdout    标准输出流    

stderr    标准错误流    

10.3.2 os

os模块提供了访问多个操作系统服务的功能。下表列出一些最有用的函数和变量。另外,os和它的子模块os.path还包含一些用于检查、构造、删除目录和文件的函数,以及一些处理路径的函数(例如,os.path.split和os.path.join让你在大部分情况下都可以忽略os.pathsep)。

函数/变量

描述

environ    对环境变量进行映射    

system(command)    在子shell中执行操作系统命令    

sep    路径中的分隔符    

pathsep    分隔路径的分隔符    

linesep    行分隔符    

urandom(n)    返回n个字节的加密强随机数据    

10.3.3 fileinput

fileinput模块能够轻松地遍历文本文件的所有行。

函数/变量

描述

input([files[, inplace[, backup]]])    便于遍历多个输入流中的行    

filename()    返回当前文件的名称    

lineno()    返回当前(累计)的行数    

filelineno()    返回当前文件的行数    

isfirstline()    检查当前行是否是文件的第一行    

isstdin()    检查最后一行是否来自sys.stdin    

nextfile()    关闭当前文件,移动到下一个文件    

close()    关闭序列    

为Python脚本添加行号

# numberlines.pyimport fileinputfor line in fileinput.input(inplcae=True)  line = line.rstrip()  num = fileinput.lineno()
print '%-40s # %2i' % (line, num)12345678

10.3.4 集合、堆和双端队列

集合

Set类位于sets模块中。非重复、无序的序列。

堆(heap)是优先队列的一种。使用优先队列能够以任意顺序增加对象,并且能在任何时间找到最小的元素,也就是说它比用于列表的min方法要有效率得多。下面是heapq模块中重要的函数:

函数

描述

heappush(heap, x)    将x入堆    

heappop(heap)    将堆中最小的元素弹出    

heapify(heap)    将heap属性强制应用到任意一个列表,将其转换为合法的堆    

heapreplace(heap, x)    将堆中最小的元素弹出,同时将x入堆    

nlargest(n, iter)    返回iter中第n大的元素    

nsmallest(n, iter)    返回iter中第n小的元素    

元素虽然不是严格排序的,但是也有规则:i位置处的元素总比2*i以及2*i+1位置处的元素小。这是底层堆算法的基础,而这个特性称为堆属性(heap property)。

双端队列(以及其他集合类型)

双端队列(Double-ended queue)在需要按照元素增加的顺序来移除元素时非常有用。它能够有效地在开头增加和弹出元素,这是在列表中无法实现的,除此之外,使用双端队列的好处还有:能够有效地旋转(rotate)元素。deque类型包含在collections模块。

10.3.5 time

time模块所包含的函数能够实现以下功能:获得当前时间、操作时间和日期、从字符串读取时间以及格式化时间为字符串。日期可以用实数或者包含有9个整数的元组。元组意义如下:

索引

字段

0    年    比如2000等    

1    月    范围1~12    

2    日    范围1~31    

3    时    范围0~23    

4    分    范围0~59    

5    秒    范围0~61(应付闰秒和双闰秒)    

6    周    当周一为0时,范围0~6    

7    儒历日    范围1~366    

8    夏令日    0、1、-1    

time的重要函数:

函数

描述

asctime([tuple])    将时间元组转换为字符串    

localtime([secs])    将秒数转换为日期元组,以本地时间为准    

mktime(tuple)    将时间元组转换为本地时间    

sleep(secs)    休眠secs秒    

strptime(string[, format])    将字符串解析为时间元组    

time()    当前时间(新纪元开始后的秒数,以UTC为准)    

10.3.6 random

random模块包括返回随机数的函数,可以用于模拟或者用于任何产出随机输出的程序。

如果需要真的随机数,应该使用os模块的urandom函数。random模块内的SystemRandom类也是基于同样功能。

函数

描述

random()    返回0 <= n < 1之间的随机实数n,其中0 < n <=1    

getrandbits(n)    以长整型形式返回n个随机位    

uniform(a, b)    返回随机实数n,其中 a <= n < b    

randrange([start], stop, [step])    返回range(start, stop, step)中的随机数    

choice(seq)    从序列seq中返回随机元素    

shuffle(seq[, random])    原地指定序列seq    

sample(seq, n)    从序列seq中选择n个随机且独立的元素    

示例一:

from random import *from time import *

date1 = (2008, 1, 1, 0, 0, 0, -1, -1, -1)
time1 = mktime(date1)
date2 = (2009, 1, 1, 0, 0, 0, -1, -1, -1)
time2 = mktime(date2)

random_time = uniform(time1, time2)print asctime(localtime(random_time))12345678910

10.3.7 shelve

提供一个存储方案。shelve的open函数返回一个Shelf对象,可以用它来存储内容。只需要把它当做普通的字典来操作即可,在完成工作之后,调用close方法。

import shelve

s = shelve.open('test.dat')
s['x'] = ['a', 'b', 'c']# 下面代码,d的添加会失败# s['x'].append('d')# s['x']# 正确应该使用如下方法:temp = s['x']
temp.append('d')
s['x'] = temp123456789101112

10.3.8 re

re模块包含对正则表达式的支持。

正则表达式

  • .号只能匹配一个字符(除换行符外的任何单个字符)。

  • \为转义字符

  • 字符集:使用[]括起来,例如[a-zA-Z0-9],使用^反转字符集

  • 选择符(|)和子模式():例如'p(ython|erl)'

  • 可选项(在子模式后面加上问号)和重复子模式:例如r'(http://)?(www\.)?python\.org,问号表示出现一次或根本不出现。 

  • (pattern)*:允许模式重复0次或多次

  • (pattern)+:允许模式重复1次或多次

  • (pattern){m,n}:允许模式重复m~n次

  • 字符串的开始(^)和结尾($)

  • 所有的重复运算符都可以通过在其后面加上一个问号变成非贪婪版本,例如:r'\*\*(.+?)\*\*'

  • re模块的内容

    re模块中一些重要的函数

    函数

    描述

    compile(pattern[, flags])    根据包含正则表达式的字符串创建模式对象    

    search(pattern, string[, flags])    在字符串中寻找模式    

    match(pattern, string[, flags])    在字符串的开始处匹配模式    

    split(pattern, string[, maxsplit=0])    根据模式的匹配项来分隔字符串    

    findall(pattern, string)    列出字符串中模式的所有匹配项    

    sub(pat, repl, string[, count=0])    将字符串中所有pat的匹配项用repl替换    

    escape(string)    将字符串中所有特殊正则表达式字符转义    

    匹配对象和组

    对于re模块中那些能够对字符串进行模式匹配的函数而言,当能找到匹配项时,返回MatchObject对象。包含了哪个模式匹配了子字符串的哪部分的信息。——这些“部分”叫做组。

    组就是放置在圆括号内的子模式。组的序号取决于它左侧的括号数。组0就是整个模式。

    re匹配对象的一些方法:

    方法

    描述

    group([group1, …])    获取给定子模式(组)的匹配项    

    start([group])    返回给定组的匹配项的开始位置    

    end([group])    返回给定组的匹配项的结束位置(和分片一样,不包括组的结束位置)    

    span([group])    返回一个组的开始和结束位置    

    作为替换的组号和函数

    示例:假设要把'*something*'用<em>something</em>替换掉:

  • emphasis_pattern = r'\*([^\*]+)\*'# 或者用VERBOSE标志加注释,它允许在模式中添加空白。emphasis_pattern = re.compile(r'''

  •          \*      # 开始的强调标签

  •          (       # 组开始

  •          [^\*]+  # 除了星号的所有字符

  •          )       # 组结束

  •          \*      # 结束的强调标签

  •          ''', re.VERBOSE)


  • re.sub(emphasis_pattern, r'<em>\1</em>', 'Hello, *world*!')# 结果'Hello, <em>world</em>!'12345678910111213141516

  • 找出Email的发信人

  • # 示例一# 匹配内容:From: Foo Fie <foo@bar.baz># find_sender.pyimport fileinput, re

  • pat = re.compile('From: (.*) <.*?>$')for line in fileinput.input():

  •  m = pat.match(line)  if m: print m.group(1)# 执行$ python find_sender.py message.eml# 示例二# 列出所有Email地址import fileinput, re

  • pat = re.compile(r'[a-z\-\.]+@[a-z\-\.]+', re.IGNORECASE)

  • addresses = set()for line in fileinput.input():  for address in pat.findall(line):

  •    addresses.add(address)for address in sorted(addresses):  print address12345678910111213141516171819202122

  • 模板系统示例

    模板是一种通过放入具体值从而得到某种已完成文本的文件。

    示例:把所有'[somethings]'(字段)的匹配项替换为通用Python表达式计算出来的something结果

  • 'The sum of 7 and 9 is [7 + 9].'

  • 应该翻译成'The sum of 7 and 9 is 16.'


  • 同时,可以在字段内进行赋值

  • '[name="Mr. Gumby"]Hello, [name]'

  • 应该翻译成'Hello, Mr. Gumby'12345678

  • 代码如下

  • # templates.py#!/usr/bin/python# -*- coding: utf-8 -*-import fileinput, re# 匹配中括号里的字段field_pat = re.compile(r'\[(.+?)\]')# 我们将变量收集到这里scope = {}# 用于re.sub中def replacement(match):

  •  code = match.group(1)  try:    # 如果字段可以求值,返回它:

  •    return str(eval(code, scope))  except SyntaxError:    # 否则执行相同作用域内的赋值语句......

  •    exec code in scope    # ......返回空字符串

  •    return ''# 将所有文本以一个字符串的形式获取lines = []for line in fileinput.input():

  •  lines.append(line)

  • text = ''.join(lines)# 将field模式的所有匹配项都替换掉print field_pat.sub(replacement, text)123456789101112131415161718192021222324252627282930313233

  • 10.3.9 其他标准模块

  • functools:能够通过部分参数来使用某个函数(部分求值),稍后再为剩下的参数提供数值。

  • difflib:可以计算两个序列的相似程度。还能从一些序列中(可供选择的序列列表)找出和提供的原始序列“最像”的那个。可以用于创建简单的搜索程序。

  • hashlib:可以通过字符串计算小“签名”。

  • csv:处理CSV文件

  • timeit、profile和trace:timeit(以及它的命令行脚本)是衡量代码片段运行时间的工具。它有很多神秘的功能,应该用它代替time模块进行性能测试。profile模块(和伴随模块pstats)可用于代码片段效率的全面分析。trace模块(和程序)可以提供总的分析(覆盖率),在写测试代码时很有用。

  • datetime:支持特殊的日期和时间对象,比time的接口更直观。

  • itertools:有很多工具用来创建和联合迭代器(或者其他可迭代对象),还包括实现以下功能的函数:将可迭代的对象链接起来、创建返回无限连续整数的迭代器(和range类似,但没有上限),从而通过重复访问可迭代对象进行循环等等。

  • logging:输出日志文件。

  • getopt和optparse:在UNIX中,命令行程序经常使用不同的选项或开关运行。getopt为解决这个问题的。optparse则更新、更强大。

  • cmd:可以编写命令行解释器。可以自定义命令。

  • 10.4 新函数

    函数

    描述

    dir(obj)    返回按字母顺序排序的属性名称列表    

    help([obj])    

    reload(module)    

    11. 文件

    11.1 打开文件

    open函数用来打开文件,语法如下:

  • open(name[, mode[, buffering]])1

  • 11.1.1 文件模式

    默认只读打开。

    描述

    ‘r’    读模式    

    ‘w’    写模式    

    ‘a’    追加模式    

    ‘b’    二进制模式(可添加到其他模式中使用)    

    ‘+’    读/写模式(可添加到其他模式中使用)    

    11.1.2 缓存

    open函数的第三个参数(可选)控制文件的缓冲。有缓冲时,只有使用flush或close时才会更新硬盘上的数据。

    描述

    0或False    无缓冲    

    1或True    有缓冲    

    大于1的数字    缓冲区大小(字节)    

    -1或负数    默认的缓冲区大小    

    11.2 基本文件方法

    11.2.1 读和写

  • >>> f = open('somefile.txt', 'w')>>> f.write('Hello, ')>>> f.write('World!')>>> f.close()>>> f = open('somefile.txt', 'r')>>> f.read(4)  # 读取的字符数(字节)'Hell'>>> f.read()'o, World!'12345678910

  • 11.2.2 管式输出

  • # somescript.pyimport systext = sys.stdin.read()words = text.split()

  • wordcount = len(words)



学习python的话大概要学习哪些内容?
想要学习Python,需要掌握的内容还是比较多的,对于自学的同学来说会有一些难度,不推荐自学能力差的人。我们将学习的过程划分为4个阶段,每个阶段学习对应的内容,具体的学习顺序如下:Python学习顺序:①Python软件开发基础 掌握计算机的构成和工作原理 会使用Linux常用工具 熟练使用Docker的基本命令 建立Python...

Python该怎么入门?
诞生近30年来,很多我们耳熟能详的产品都是基于Python开发出来的,国内的豆瓣、知乎和果壳网都是基于Python开发的,而Youtube、Dropbox和Reddit也是诞生于Python的框架之下。越来越多的人编程新人会选择Python作为他们学习的第一种编程语言加以学习。那么Python改怎么学呢?第一步当然是准备基础,准备运行环境...

千锋教育告诉你Python从入门到精通要看哪些书
分享十本学习Python的书籍,让你学习Python从入门到精通,有兴趣的可以一起看看。1、Python基础教程(第2版 修订版)《Python基础教程(第2版修订版)》包括Python程序设计的方方面面,内容涉及的范围较广,既能为初学者夯实基础,又能帮助程序员提升技能,适合各个层次的Python开发人员阅读参考。2、Python...

python基础都有哪些内容呢?
阶段一:Python开发基础 Python全栈开发与人工智能之Python开发基础知识学习内容包括:Python基础语法、数据类型、字符编码、文件操作、函数、装饰器、迭代器、内置方法、常用模块等。阶段二:Python高级编程和数据库开发 Python全栈开发与人工智能之Python高级编程和数据库开发知识学习内容包括:面向对象开发、Socket...

请问怎么学习Python?
2. 熟练运用Python面向对象知识进行程序开发 3. 对Python的核心库和组件有深入理解 4. 熟练应用SQL语句进行数据库常用操作 5. 熟练运用Linux操作系统命令及环境配置 6. 熟练使用MySQL,掌握数据库高级操作 7. 能综合运用所学知识完成项目 知识点:Python编程基础、Python面向对象、Python高级进阶、MySQL数据...

python基础教程
教程学习时间15天 1-3天内容:为Linux基础命令 4-13天内容:为Python基础教程14-15 天内容:为飞机大战项目演练 第一阶段(1-3天):该阶段首先通过介绍不同领域的三种操作系统,操作系统的发展简史以及Linux系统的文件目录结构让大家对Linux系统有一个简单的认识,同时知道为什么要学习Linux命令。然后...

Python 入门书籍有哪些推荐?
1、Python基础教程:是经典的Python入门教程书籍,本书层次鲜明,结构严谨。这本书既适合初学者夯实基础,又能帮助Python程序员提升技能,即使是Python方面的技术专家,也能从书里找到实用性极强的内容。2、Python数据分析(Python for data analysis):该书介绍了ipython 、notebook、Numpy、Scipy和Pandas包...

如何系统地自学 Python
专注于Linux高级运维、Python开发、大数据培训,为您分享行业前沿的技术,有效的学习方法和有价值的学习资料。 向TA提问 关注 展开全部 按照这个大纲按部就班的学习,就能系统的学习Python了!阶段一:Python开发基础Python全栈开发与人工智能之Python开发基础知识学习内容包括:Python基础语法、数据类型、字符编码、文件操作...

Python如何入门?
03 软件方面准备完成之后,如果没有人带自己的话,可以先在网上搜索一些教程来进行学习,入门都是比较简单的。04 要

如何学习python
按照上面的Python学习路线图学习完后,你基本上就可以成为一名合格的Python开发工程师。当然,想要快速成为企业竞聘的精英人才,你需要有好的老师指导,还要有较多的项目积累实战经验。对于Python开发有兴趣的小伙伴们,不妨先从看看Python开发教程开始入门!B站上有很多的Python教学视频,从基础到高级的都有,...

荔蒲县13743406056: python基础教程
撒狄速效: "你可以看黑马程序员Python入门教程: 教程学习时间15天 1-3天内容:为Linux基础命令 4-13天内容:为Python基础教程14-15 天内容:为飞机大战项目演练 第一阶段(1-3天): 该阶段首先通过介绍不同领域的三种操作系统,操作系统的发...

荔蒲县13743406056: 我工资2000请问每月要交多少社保?
撒狄速效: 社保缴费比例由个人缴费和单位缴费组成,社保缴纳额度每个地区的规定都不同,基数是以工资总额为基数.由于养老、工伤、医疗、生育、失业等社保5大险种的缴费基数与待遇补偿基数均与上年度在岗职工平均工资相挂钩,因此,平均工资...

荔蒲县13743406056: 19期胜负彩简单,推荐稳胆01布里斯(0)03 - 0623:00唐
撒狄速效: 01 布里斯(0) 03-06 23:00 唐卡斯(0) 02 卡迪夫(0) 03-06 23:00 米德尔(0) ... 西布朗(0) 08 索 肖(15) 03-07 02:00 图卢兹(11) 3. 09 雷 恩(10) 03-07 ...

荔蒲县13743406056: 零基础如何学Python -
撒狄速效: 找本基础的书先看下语法, 然后自己搭一个环境, 边看书边练习, 偶尔自己想一个场景去实现,实现的过程中有问题可以翻书查看,也可以上网搜索,以便熟悉基础语法和函数.

荔蒲县13743406056: 我没有编程基础,一点也不懂,领导让学python,有没有简单的教程和实例帮帮我 -
撒狄速效: 可以从'learning python' 或者 '可爱的python' 这两本书开始入门的.

荔蒲县13743406056: python编程 输入一组整数数组,求出两两之差的最小绝对值.只需得出最小值 如:输入:[10,3,12,9] 输入:1 -
撒狄速效: 你好, 代码如下: ------ a = [10, 8, 2, 45, 69, 38, 11, 15] #假设该列表为需要输入的一组数 a.sort(reverse = True) #首先对这组数进行从大到小的排序 print a #输出排序结果 min = a[0] #令min变量记录该列表中最大的值 for i in range( len(a) -1 ): #i用...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网