自学Python笔记(三)

[复制链接]
yongbuzai 发表于 2017-12-30 20:13:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
何编程语言,无非是运算符,数据类型,数据结构,流程控制,分支,迭代等,昨天学习了Python的一些基本的知识和条件决策、循环语句的使用,对于变量没有展开记录,可能给部分围观的朋友造成了困惑,顺便提醒下共同学习的朋友,要善于运用网络来学习。0 R5 u+ m$ C9 h! k7 S( S
" i: F: {0 b# _, x3 T
初学者碰到的大部分技术问题都是可以通过“搜索引擎”解决的,遇到的问题或者报错信息在搜索引擎里可以找到很多高质量的答案,另外在 google、stackoverflow、github 和各种技术论坛、博客也能找到你需要的东西。
) \% G5 ^: P: n; j+ u5 d6 D今天补上昨天忽略的东西,Python虽然易学,也正因为易出了问题更不容易发现,所以一些细节的地方还是要熟悉的。5 J( c$ X) G4 I
Python 变量类型
/ Q; \! Y: q/ r4 j, U/ @+ M

7 p: \) s: i  r0 _4 t2 U. a& w1 X* g$ A" W& f8 l' P, J* p
变量是存储在内存中的值,创建变量时系统会在内存中开辟一个空间,包括变量的标识,名称和数据这些信息。Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。每个变量在使用前必须赋值,变量赋值以后该变量才会被创建。- {( v6 [; |; G; u6 u; C
Python 对大小写敏感,也就是说 “a” 和 “A” 会是两个不同的变量,而不是同一个。
; l$ D% t* m. Z% Q9 I在Python中也是用等号(=)来给变量赋值,如下:- P" X9 g0 j0 E( v7 w
/ L( X7 s/ b8 f
counter = 100 # 赋值整型变量
0 m, s0 {4 d' g1 C6 Umiles = 1000.0 # 浮点型3 F8 y+ V1 H2 {) E& k5 [
name = "John" # 字符串
8 z5 }% w# Y, o: [7 i  T; |
不同的数据类型是不能够进行合并使用的,有时候,我们需要对数据内置的类型进行转换,有几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
  j0 a+ H) b- R6 ?2 P7 H在Python中这些转换函数名就是数据类型,参考如下:" o7 C7 N9 Y4 Y9 k' d, A0 R
6 z  K2 t0 H1 I
数描述int(x [,base])
, }, U; g! n' A- p将x转换为一个整数) i- G3 y1 ?; p6 Z0 ^. z
long(x [,base] )
0 x! Y1 s8 k  _- O2 R, z将x转换为一个长整数" [! b2 K! P4 N* a7 F+ M
float(x)1 {* j# a1 H, \8 N
将x转换到一个浮点数
! f0 J3 y& h$ @: E. Vcomplex(real [,imag])
: V& d- [0 H& D/ k5 x" X1 g创建一个复数: \( O' s& I* i( X. @! J
str(x)1 D5 m2 _1 K4 ^4 }- z  V7 k2 {( O
将对象 x 转换为字符串+ d, @+ K" p; ~8 g4 J7 x
repr(x)! @, t) A5 k& |( D
将对象 x 转换为表达式字符串
* k% s' |# u, b+ K# W2 Z) w( \- keval(str)
5 F8 c) N1 A( ]4 z用来计算在字符串中的有效Python表达式,并返回一个对象
6 [, e8 f. v' D& V! x- Wtuple(s)
% |% x8 n% K9 k+ ]2 s将序列 s 转换为一个元组/ W) H, B! c* Q* E! v6 }
list(s); i. e% x5 F5 t$ U+ P( i$ C  V" B
将序列 s 转换为一个列表
3 F% r8 k  |0 Eset(s)
0 E. W8 T3 h% h+ J转换为可变集合* B# s1 h; r$ A! G! f$ l4 x& W2 d
dict(d). _$ C$ u$ y$ C5 q) [' P) y( V0 e
创建一个字典。d 必须是一个序列 (key,value)元组。
# o8 q. T& e& O3 g6 e6 \frozenset(s)$ z% z9 m( j( h1 b' D
转换为不可变集合
  d: d/ D  s" J6 fchr(x)
$ S1 ~) n8 H% N: z1 H& t/ b将一个整数转换为一个字符
9 _% @9 r- g% \6 N) B# f- j" eunichr(x)
+ y; k2 Z, L9 N0 j( b! F将一个整数转换为Unicode字符. ~. A' P5 p7 r: \' ?. U
ord(x): _; V- u2 ?  w
将一个字符转换为它的整数值* i! F9 f8 }* M8 Q# y% K
hex(x)! U  Q6 s0 b! n" L* @: D7 C
将一个整数转换为一个十六进制字符串
" Z$ ~) r& R$ F3 q8 r2 Uoct(x)0 |% C' C; ~- Z( {  S- {1 v
将一个整数转换为一个八进制字符串
+ x4 P6 ?  [5 B$ j" tPython有五个标准的数据类型
% G) q( {/ B6 p' U
Numbers(数字):有int(有符号整型)、long(长整型[也可以代表八进制和十六进制])、float(浮点型)、complex(复数)等四种。
7 h: ]! _/ [9 S0 cString(字符串):数字、字母、下划线组成的一串字符,在编程中经常用到。
' w- g: s& |6 V# C  `List(列表):是 Python 中使用最频繁的数据类型,列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。列表用 [ ] 标识,是 python 最通用的复合数据类型。
$ Z$ ]5 |& \0 MTuple(元组):元组是另一个数据类型,相当于只读列表List(列表),元组用"()"标识,元组不能二次赋值* R! ?( |3 s  g. {3 p
Dictionary(字典):字典(dictionary)是除列表外Python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。字典用"{ }"标识。字典由索引(key)和它对应的值value组成。与列表的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. ?- j" F$ |0 S3 f# R/ }, ^% n2 x
Python中常见的数据结构可以统称为容器(container),至于这些数据类型如何去用估计详细说都可以作为一个话题,这里暂且放一下,后面还是结合例子去学习。' g8 s' w# n2 A% T6 p4 G
1 e3 W7 c6 m% }. I: o
容器
9 P8 c8 j* F2 [2 n$ _" @1 o7 \上图序列中的每一个元素都被分配一个序号——即元素的位置,也称为“索引”,第一个索引,即第一个元素的位置是0,第二个是1,依次类推。# m4 x3 P9 h/ h, t. H' ?% u% _

  h, @* Y- e# _) Q" Q看完是不是懵懵的,别着急这些基本的东西如果不放进例子有时还真不容易理解,后面遇到时再用标注的方式说明。
) a% Z) M0 [& o, v& n, f这里顺便提一下变量的作用域) J2 \" w, d5 h) O% K

" l" x+ x. Y* X& g# z) t变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。也就是说一个程序的所有的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
8 y1 T; j  x( P7 RPython中有全局变量局部变量两种最基本的变量作用域,定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
& }; `3 U- c% m# |5 {2 N局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。4 w! A! M. {  ~
: O: o! W7 {( I% W. @6 j0 C
全局变量的使用! t' {) E! z. `4 s+ N+ d
上面的例子包含了自定义函数,可以到后面看完自定义函数再了解一下。/ z- j$ w) t6 a( X6 K
Python 模块
% \- @# Q5 Q% \# \0 a9 N+ T

/ ?8 p# b. e7 d" A; ~6 \) O$ X+ {3 j0 K
除去上面的数据类型外日期、时间也是最常用到的,Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。说到这好像又涉及到模块这个概念。
$ f$ \, A9 a( p+ lPython 模块(Module),是一个 Python 文件,包含了 Python 对象定义和Python语句,可以让你更有逻辑地组织代码段,模块能定义函数,类和变量,也可以包含可执行的代码。# J& C0 S5 b4 g6 B3 |
使用import可以导入模块,导入之后,就可以使用这个模块下面的函数了。
# E4 `* y+ u4 H( s' g0 n4 _比如导入time模块,然后使用time模块下面的time函数:! Q2 x7 Z. f$ S
4 B  L5 \' f$ V, p
import time7 B) V% }' Z  C. ]2 a" l2 R9 h
print ("当前时间戳为:", time.time())
5 _: t" @1 W* Z( E
在使用中你会发现需要使用time()函数的时候,time这个模块前缀都需要加上,直接输入time()会报“TypeError: 'module' object is not callable”的错,有什么办法可以不用每次都带前缀?# L6 x1 S8 H: c
from time import time# v2 L  _/ f) j* _% L
2 }+ t% V' M- G: X6 H
print ("当前时间戳为:", time())) X1 e2 P. |9 D* k! \. Z- q# w
这样每次使用time函数的时候就不用再加time前缀了。但如果你需要直接调用time模块下的其他函数可以使用通配符*。  H7 F- d3 ~5 r+ i5 g& n
from time import *
& ~# C: E) O- T4 ?2 ^: m; d. }1 A8 @! ~# kprint ("当前时间戳为:", time())
: _2 u& G* d7 e0 S8 Q9 F* kprint ("本地时间为 :",asctime(localtime(time())))
* {( u+ y; K4 W0 z( w1 |( J5 t

- V: E8 j' X$ I* P* M$ q运行结果
5 c( g$ z/ F% W5 }) V# C1 K对于日历(Calendar)模块的使用可以参考时间(time)模块的引用办法,此外时间日期还可以用datetime模块。  m5 r; D( V6 E& I2 M9 Q% l
import datetime
8 B+ R$ v5 i* V% u7 g) w  I& _! v8 u" @* S4 U! A+ m. Z
i = datetime.datetime.now()
+ c8 h5 z7 i& W& G  U% K: uprint ("当前的日期和时间是 %s" % i)
" D* r$ v) t6 V! d. a& Kprint ("ISO格式的日期和时间是 %s" % i.isoformat() )
# G! Z3 I  V9 ]3 E# X% Oprint ("当前的年份是 %s" %i.year)3 `- |4 q' O% _; ^
print ("当前的月份是 %s" %i.month)/ y4 \2 W9 k8 _9 X$ `/ h
print ("当前的日期是 %s" %i.day)
9 a' x4 T: Q8 Gprint ("dd/mm/yyyy 格式是 %s/%s/%s" % (i.day, i.month, i.year) ). o+ g& H* ~$ m* T) Q' `! }
print ("当前小时是 %s" %i.hour)! W* a1 Z) t$ V* y  Y
print ("当前分钟是 %s" %i.minute)& A0 ]+ K; p( e1 ^- T0 b7 X4 {
print ("当前秒是 %s" %i.second)) q' |' B: F& P# c/ I  M( @& }
5 A% F* c/ ?1 R" p+ j
运行结果6 P0 Q; O5 n. ^* p" K* f  ^
Python函数
; g5 T( ]8 T; e6 t* n7 h3 u, e/ w. `0 Y8 K, x
函数function是各类编程语言中都属于核心内容之一,也是比较重要的一块。函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。Python提供了许多内建函数,比如print()。+ [6 \+ A6 a, J8 s
函数能提高应用的模块性,和代码的重复利用率。也可以自己创建函数,这被叫做用户自定义函数# d3 W2 R; ]( J2 i
在Python中,函数是第一个类对象,这意味着函数的用法并没有限制。Python函数的使用方式就像Python中其他值一样,例如字符串和数字等。作为初学者会自定义函数,熟悉函数的调用即可。) P. W/ Z: y* j/ D0 [, s

- n. v! e7 X* l/ k1.自定义函数(def)与调用
/ F4 f0 ~! }- w) T& y8 \
' y  G) {1 t3 @$ ?4 P. y# c5 ?函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。例如:def functionname( parameters )" l5 K) n/ s9 Y, r- o; q: q1 [1 {
任何传入参数和自变量必须放在圆括号中间,函数内容以冒号起始,并且缩进
6 F2 U: _. D' @( Lreturn [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的return相当于返回 None。/ n" k, l# y- g: ^2 J9 j  S
7 @* H( `( a7 ?- E2 X& ^
例子,头条引用自动缩进,只好抓图了# F2 T  l6 q$ |, N6 Q; c
3 o/ l$ S; L# R$ o. i
运行结果
$ O8 V. D  P& n' j( h8 @( ]2.函数的调用
& f' T, `; M' p4 d) ]Python语言中的所有参数都将通过引用传递。如果在函数中更改参数所指的内容,则更改也会反映在调用函数的外部。可以使用以下类型的形式参数来调用函数:7 F- L$ Z7 x+ V; K

! [4 ^# v( R) b$ _0 y, x必需参数:须以正确的顺序传入函数。调用时的数量必须和声明时的一样。& M: h$ x, J% A) i
关键字参数:函数调用使用关键字参数来确定传入的参数值,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。5 m. m' F0 b- ^0 U
默认参数:如果在该参数的函数调用中没有提供值,则默认参数是一个假设为默认值的参数。
1 Q) c0 t$ z5 t; y/ C, W可变长度参数:在定义函数时,可能需要处理更多参数的函数。这些参数被称为可变长度参数,并且不像要求的和默认的参数那样在函数定义中命名。& L7 {0 N7 f  [* b  @* P7 ~
Python文件读写
7 y  u# P; _. d/ G' T: v$ {+ F5 z* e2 F* C
Python中除去利用input()、print()完成标准的输入输出外,对于初学者来说对文件数据读写也很重要。Python 提供了必要的函数和方法进行默认情况下的文件基本操作,可以用 file 对象做大部分的文件操作。* L- C3 J8 `1 I
# 打开一个文件并获得部分属性
3 @* s% T! Y8 H3 Y+ g
$ P) z: y; r5 |1 S1 ^$ C" m
fo = open("test.txt", "wb")% H  k. S8 F' I5 m3 V1 G
print ("Name of the file: ", fo.name)5 [. n3 A3 X) M
print ("Closed or not : ", fo.closed)8 a. q& D6 z  @/ j4 T& t
print ("Opening mode : ", fo.mode)
" Y3 j6 e5 V+ W; R5 }. y0 Nfo.close()
8 V6 i3 z& Z  q9 F5 }$ v
* H1 \1 [% k2 c% q! ^/ I
运行结果
; x8 E% M3 a3 y" K
# 打开文件并读写文本内容  b8 V+ g3 o( r+ t
9 Q( q0 r9 {8 V1 m! `, f4 T0 m/ P
fo = open("test.txt", "w+") #如果文件存在则覆盖, 如果不存在则创建后读写。0 P! [, H8 G% U! D0 l5 J8 W
fo.write( "Python is a great language.\nYeah its great!!\n") #写入
5 c  g$ I5 l- k9 D5 _( I+ g0 Xposition = fo.tell(); #文件定位
3 n, y2 \# V7 U; dprint ("当前文件位置 : ", position)4 E. j4 {( I9 a" n! q
position = fo.seek(0, 0);
& |1 S; E4 a& D8 p$ l- `: yprint ("当前文件位置 : ", position)# Y+ d) A+ q+ b' W( Q6 k( ~1 h
str = fo.read(6);# 从当前位置读取6个字符
3 M. |  B$ s: A8 oprint ("读取的字符串是 : ", str)
/ w+ n+ n% p; S# Close opend file# R7 ~+ Z6 j0 b
fo.close()4 X  ^! u8 M* s' V+ O8 q& j
- W+ j' F/ m* }) [* A
运行结果
( H$ d2 F6 D- e1 @基本的读写到此为止,一些详细的根据后面的需要再补充。1 ]3 _! W0 n* F" |1 p

# X6 x- z4 f( R5 `# y5 P9 X学到这里我们基本掌握了Python中的关键字,函数,数学表达式、变量、数据结构等等,基础了解后,就是做一些小项目巩固基础了,任何一种语言的学习不练习也是白费,算法,数据结构,计算机基础这些东西是非常重要的,但作为初学者首先要保证的是,自己的 API 调用能力以及复制粘贴代码的能力能够达到完成一个小应用的程度。1 s# e" {/ {& M0 T3 r
下面做简单的回顾:7 n- ]$ [! n  L1 D% |( ~
: X# l+ b6 p9 I# `0 s9 X6 B

    / c2 P: S) W( R- O* y
  • Python能做什么?我为什么要学Python?3 W' o0 X1 H. p& H* ^$ `  h) h
  • 如何安装?如何安装模块?文件编码是什么?& ~/ ~- _, h% Q( i6 K+ [
  • 什么是标识符、变量、函数、模块、解释器?
    ; U; u+ @  K. b& h5 _
  • Python基本数据类型有哪些?: o9 l2 v& \+ ?) S( N3 ]3 J) `+ q" K
  • 列表、元组、字典和字符串的操作方法。
    % `* N4 x  G, R' \: L5 F) k( z5 H$ P
  • 条件、循环的使用。7 B: ~4 \& f/ j( ^! I3 P6 I
  • 简单文件的读写。3 R6 v8 M- ^/ P5 n& B0 H
学以致用
' N) Y, U6 G$ X* n4 U* ]% }
& n" B5 I0 M0 h. ?6 C3 A; |后面根据工作需要将利用matplotlib、pandas模块编写一个成绩分析系统,解脱日常的手工操作,和武哥一起嗨起来~7 J. H4 k4 \' k) B

# y; s* ?! C. z# r. l
0 x0 f- Z0 @$ g. `# @$ l6 OPandas, Y. N! Z0 R7 a2 |% X: h

2 J# ~( u. ^% M! D, {Matplotlib

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
推荐阅读更多+
阅读排行更多+
用心服务创业者
0851-88611148
周一至周五 9:00-18:00
意见反馈:admin@0851life.com

扫一扫关注我们

Powered by 童码少儿编程 X3.4© 2001-2013 0851life Inc.|网站地图