python基础讲义第一弹
来源:互联网 发布:建行网络系统 编辑:程序博客网 时间:2024/06/05 10:08
前言:
本系列文章将会对有编程经验的跨语言编程爱好者提供, 而来也是为了自己熟悉这门语言做下笔记。 所需了解的内容, 基础语法应用、迭代器, 常见数据结构, 面向对象编程, 少量设计模式等。
第一弹内容:
安装python
这里有一千种方法,从略, 但是本系列以python3 讲解。
了解数据类型和编码,输入输出
区分语言的运用,和基础数据类型的跨越, 输入输出(print . lable = input())
了解基础的内置数据结构
这里主要讲解tuple, list, set , dict, deque
基础数据结构无非就是对应到了(),[],{}即可。
元组直接用(),可以用其他数据结构直接嵌用。例如list()
list 为链表集合结构, 相当于Java 的ArrayList, C++的Vector。
set 无重集合结构。
dict 为字典结构, 对应Java的是Map。
##举例说明>>>a = (1,2,3); type(a)>>>b = tuple(a) ; type(b)>>>c = set(1,1,2,3,4);type(c)>>>d = {'Name':;'Actanble', 'IQ':223};type(d)##表示方法有很多种,以后用到了再说明。
简单的高级特性
##切片 ::就是取其中的一部分元素 [start :end]的功能##迭代 :: 雷速于java的迭代器功能后的加强for循环for i in range(10): print (2*i)##列表生成式l = [2*i for i in range(10) if(i>4)]print (i) ##输出符合条件i的列表推导式##生成器 :: 只会操作到开始一部分元素的一个生成器g = (x * x for x in range(10))while(1): print (next(g))###应用2def fib(max): n, a, b = 0, 0, 1 while(n < max): print(b) a, b = b, a + b n = n + 1 return 'complete'#####当然fib 可以直接用递归返回, 或者用另外一个数组存储返回即可。 [].append()##迭代器##可迭代对象既是实现了 iterable借口的对象, 例如集合, string 等。from collections import Iterableprint(isinstance(100, Iterable)) ##是不是迭代类型, instance(110,int)是不是整形。#同样 isinstance(iter([]), Iterator)判断是不是迭代器类型
函数式编程
简而言之就是利用指针特性完成函数相关性能的相关编程。
map 和 reduce , 简易lamda应用
yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator
f = absdef add(x, y, f): return f(x) + f(y)print(add(2,3,f))##map单元映射def g(x): return x^2 + x -1 r = map(g, [1, 2, 3, 4, 5, 6, 7, 8, 9])print (r)##reduce 应用from functools import reducedef char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]def str2int(s): return reduce(lambda x, y: x * 10 + y, map(char2num, s))
fiter 综合练习
def _odd_iter(): n = 1 while True: n = n + 2 yield ndef _not_divisible(n):##定义一个筛选函数: return lambda x: x % n > 0def primes(): yield 2 it = _odd_iter() # 初始序列 while True: n = next(it) # 返回序列的第一个数 yield n it = filter(_not_divisible(n), it) # 构造新序列# 打印1000以内的素数:for n in primes(): if n < 1000: print(n) else: break## 其实 l = [2*i + 1 for i in range(max/2+1)] 的即可, 但是了解这个过程中指针操作对象, 操作的是什么, 这个过程。
模块编程
自定义模块示例, 其他略
import sysdef test(): args = sys.argv if len(args)==1: print('Hello, world!') elif len(args)==2: print('Hello, %s!' % args[1]) else: print('Too many arguments!')if __name__=='__main__': test()
另外第三方模块只是看做一个大类的集合即可即可, 后面经常用到不加赘述
比如以前我的博客中经常用到 numpy, os, pandas , scanpy, bootstrap, request等。都属于模块。
理解作用域的修饰符, xx ( public )和 _x(pravete); oop编程再详解。此处略, 补上一个简单的应用举例, 模块内部调用。
def _private(name): return 'Hello, %s' % namedef _private_2(name): return 'Hi, %s' % namedef greeting(name): if len(name) > 3: return _private(name) else: return _private_2(name)
后记
关于python基础要是有C++或者Java基础都会很容易理解, 其中只要是指针的操作和高级特性麻烦一点, 但是也都不难理解, 第二代将会全面展开面向对象编程, 封装、继承、多态。 另外再补上 IO 和 正则表达式,
第二弹内容
面向对象
第三弹内容
IO, 线程进程、错误调试、
正则, 常用内建模块(相当于了解api, Java的常见类学习)
第四弹
编程技术升级: 网络编程、web开发、访问数据库、SMTP协议的邮件收发、异步IO。
参考讲义
廖雪峰的Python教程
- python基础讲义第一弹
- Python基础讲义第二弹面向对象编程(淘宝平台模拟为例)
- 《计算机网络基础》讲义
- RunLoop基础讲义
- 疯狂Android讲义第一讲
- 讲义二 第一个HelloWorld
- 学习Python 第一弹——基础函数汇总
- python基础:(2)第一个程序
- 【七月Python入门】 第一课入门基础
- 基础学习第一弹
- 讲义五 java语言基础
- Android 四大组件基础讲义
- andorid基础之预备讲义
- 深度学习入门基础讲义
- 前言:Python半深入讲义
- 背景:Python半深入讲义
- 资源:Python半深入讲义
- python oj第一弹
- 深度优先遍历与广度优先遍历(c++二叉树算法实现)
- 冒泡排序、选择排序
- 汇编乘法指令
- Android GridView绘制田字格,虚线
- MySQL在Linux找不到表名-处理忽略大小写
- python基础讲义第一弹
- windows下MYSQL 5.7 64位绿色版 安装步骤
- Python的自动操作(挂机)脚本相关(一)
- 2017——新的开始,加油!
- 继承和组合混搭下的构造和析构
- 【MySQL】MySQL性能优化之Block Nested-Loop Join(BNL)
- [23]CSS3 多列布局
- js基础学习第一天(关于DOM和BOM)一
- Java知识点整理