概述
一,编程环境
推荐 Jupyter Notebook.
1,可以下载安装Anaconda 使用 jupyter notebook
2,也可以在和鲸社区的"工作台"直接使用jupyter notebook环境
和鲸社区 - Kesci.comwww.kesci.com在jupyter notebook 中使用快键键 Ctrl+Enter 运行单元格cell中的代码。
《3小时Python入门》 网易云课堂视频地址:
https://study.163.com/course/introduction/1005839001.htm
二,算术运算
1+(100-20)/4+5*2 #四则运算
2**10 #乘方运算
7%5 #求模运算
7//5 #地板除法
import math
math.sin(pi/2) #三角函数
abs(-1)
math.log(e) #对数函数
math.factorial(5) #阶乘
(1 + 2j) + (3 - 1j)
complex(2,1)/(2 - 1j)
math.factorial(1000) + 2**100
三,输入输出
输入:input
输出:print
#input 输入的都是字符串
weight = input('please input your weight:')
#利用float函数将字符串转换成浮点数
weight = float(input('please input your weight:'))
weight
# 利用eval函数将输入的字符串作为表达式进行计算
age = eval(input('please input your age:'))
age
# 输出用print
print('your weight is:',weight)
四,导入模块
import ...
或 from ... import ...
或 import ... as ...
### 以普通方式导入
import datetime
datetime.datetime.today()
### 导入模块中某个对象
from datetime import datetime
datetime.today()
### 导入模块中全部对象
from datetime import *
datetime.today()
date(2018,1,1)
### 以简写方式导入模块
import datetime as dt
dt.datetime.today()
五,语法规则
1,标识符
标识符由字母、数字、下划线组成,区分大小写,不能以数字开头。 以下划线开头的标识符有特殊含义。以单下划线开头的(_foo)的代表不能直接访问的类属性, 以双下划线开头的(foo)代表类的私有成员; 以双下划线开头和结尾的(foo)代表Python里特殊方法专用的标识, 如__init() 代表类的构造函数。
import numpy
numpy.__version__
2,缩进
Python的代码块不使用大括号来控制类、函数、以及其他逻辑判断,而是使用缩进来写实现代码分组。通常用四个空格来进行缩进。
a,b = 1,2
if a>b:
x = a
else:
x = b
print(x)
3,注释
python中单行注释采用 # 开头。 多行注释使用三个单引号(''')或三个双引号(""")。
"""
author:Python_Ai_Road
date:2018-08-05
"""
def my_abs(x): #绝对值函数
if x >= 0:
return(x)
else:
return(-x)
4,一条语句分多行显示
Python语句中一般以新行作为为语句的结束符。 但是我们可以使用斜杠( )将一行的语句分为多行显示。 如果有{},[],()跨行则可以不使用
1+2+3+4+5+6+7+
7+8+9+10
a = [1,2,3,4,
5,6,7,8]
5, 同一行显示多条语句
Python可以在同一行中使用多条语句,语句之间使用分号分割。
a=1;b=a+5
六,Python数据结构概述
python内建的数据结构有列表,元组,字符串,字典,集合等。
此外常用的还有numpy中的array,以及pandas中的dataframe和series。
1,有序数据结构:
list(列表),是有序集合,没有固定大小,可以通过对偏移量以及其他方法修改列表大小。列表的基本形式如:[1,2,3,4]
tuple(元组),是有序集合,是不可变的,可以进行组合和复制运算后会生成一个新的元组。元组的基本形式比如:(1,3,6,10)
str(字符串),也是有序集合,字符串的基本形式比如:’hello'。
l = [1,2,3,4]
print(l[0])
l[0] = 3
l
2,无序数据结构:
set(集合),是一个无序不重复元素的集。 基本功能包括关系运算和消除重复元素。集合的基本形式如: {'apple','orange','banana'}
dict(字典)是无序的键:值对 (key:value 对)的集合。 键必须是互不相同的(在同一个字典之内)。 字典的基本形式如:{'ICBC': 95588, 'BOC': 95566}
d = {'ICBC': 95588, 'BOC': 95566}
d['BOC']
七,列表
### 1,建立列表
fruits = ['apple','orange','banana']
a = list(range(1,11,2))
b = [2**i for i in range(5)]
c = [[i+j for i in range(3)] for j in range(2)]
c
### 2,访问列表
# 列表支持下标访问和切片访问
print(a)
a[0]
a[-1]
a[-2]
a[0:3]
a[0:3:2]
a[0:]
a[:-2]
### 3,修改列表
a[0] = 0
a.remove(5) #删除元素
del(a[0])
a
a + [1,2,3] # +号对序列有拼接作用
a * 3 # *号有复制拷贝多份效果
### 4,列表常用函数
len(a)
max(a)
min(a)
sorted(a,reverse = True)
### 5,列表常用方法
a.extend([8,10])
a.append(11)
a.insert(0,1)
a
八,字典
字典在插入元素和查找元素方面很多时候比列表更加高效。
### 1,创建字典
d = {1:3,2:4,3:6}
a = dict([('a',1),['b',2]])
b = dict(x = 1,y = 2)
D = {i:i**2 for i in range(5)}
D
### 2,字典常用操作
a['a'] = 3
a['c'] = 5
a.keys()
a.values()
a.items()
a
a.update({'b':3,'d':10})
a
a.get('e',0)
a.setdefault('a',4)
a.setdefault('e',4)
a
a.copy()
九,字符串
### 1,创建字符串
s1 = 'I'm Jimmy.nI just use Python to say:"hello world"!'
print(s1)
s2 = "I'm Jimmy.nI just use Python to say:"hello world"!"
print(s2)
s3 = '''I'm Jimmy.
I just use Python to say:"hello world"!'''
print(s3)
s3
str(12345)
### 2,字符串拼接(+,join)
s1 = "I'm Jimmy."
s2 = "I love Python."
s3 = 'I just use Python to say:"hello world"!'
s = s1 + 'n' + s2 + 'n' + s3
print(s)
print('n'.join([s1,s2,s3]))
"abc" * 5
### 3,清洗字符串(replace,strip)
"$$$abcdef$$xyz".replace('$','')
"nabc123t".strip()
"Jimmyt18tmale".split('t')
### 4,格式化字符串(%或format)
age = 19
weight = 60.5
hobby = 'travelling'
# %d表示整数, %f表示浮点数, %s表示字符串
fs = "I'm %d years old. My weight is %.2f kg. I like %s" %(age,weight,hobby)
print(fs)
fs = "I'm {} years old. My weight is {:.2f} kg. I like {}" .format(age,weight,hobby)
fs
十,元组 tuple
# 1,创建元组
t = (1,2,3)
t0 = ()
t1 = (1,)
x = 1,2
y = tuple([1,2,3])
z = tuple('abc')
# 2,使用元组
t.count(1)
t.index(3)
#序列解包
a,b = 1,2
t1,t2,t3 = [1,2,3]
#元组可以作为字典key
d = {(1,2):4}
d
# 3,浅拷贝与深拷贝
t2 = t
l = [1,2,3]
l3 = l.copy() # 深拷贝开辟新的内存空间
l3[0] = 0
l3
l
l2 = l #浅拷贝只是原来对象的一个别名。
l2[0] = 0
l2
l
十一,集合 Set
# 1,创建集合
s = {1,2,3}
s0 = set()
s3 = {x**2 for x in range(3)}
s3
# 2,使用集合
#去除重复对象,求交集,并集,补集等操作
a = [1,2,3,3,5,6,7,5,8,7]
len(set(a))
s1 = {1,2,3,6,7}
s2 = {2,5,8,10}
s1 & s2 #交集
s1 | s2 #并集
s1.difference(s2) #广义补集
十二,条件语句if
### 1, if语句
a,b = 3,2
if a>b:
x = a
else:
x = b
#if...elif..elif...else...
y = a if a>b else b
y
### 2, 逻辑运算符
2>3
1+2<100
3 == 4-1
2 != 3
not 2==3
### 3, and和or
2>3 and 4<5
2>3 or 4<5
x = [] or [1,2,3] or {} #短路计算,注意空字典和空列表为false
y = 50 and {1} and {3,4}
y
bool(''),bool([1]),bool(-1)
十三,循环语句 for,while
# 1,for循环
l = [1,2,5,4,3]
for i in l:
print(i)
d = {'a':1,'b':2,'c':3}
for k,v in d.items():
print(k,':',v)
#求 l中最大的元素
l = [1,2,5,4,3]
max(l)
max_l = l[0]
for i in l:
max_l = i if i>max_l else max_l
print(max_l)
list(d.items())
# 2,while循环
#求1+2+3+...+100
s,i = 0,1
while i<=100:
s = s + i
i = i + 1
print(s,i)
# 3,循环控制continue,break
s = 'hello world'
# break跳出本层循环
for i in s:
if i ==' ':
break
print(i,end = '')
print('n')
# continue跳出本次循环
for i in s:
if i ==' ':
continue
print(i,end = '')
十四,函数
#1,函数参数:普通参数,默认参数,可变参数,关键字参数
#普通参数(位置参数)
def my_abs(x):
return(x if x>=0 else -x)
my_abs(-5)
my_abs(x = 5)
#默认参数 n(参数缺失时赋默认值)
def my_power(x,n = 2):
return(x**n)
my_power(5)
my_power(x = 5,n = 3)
#可变参数 *args(可以传入不定长度参数序列,元组或列表)
def my_sum(*args):
s = 0
for i in args:
s = s + i
return(s)
my_sum(1,2,3)
my_sum()
my_sum(*(1,2,3))
my_sum(*[1,2,3])
#关键字参数 **kv(可以传入字典)
def student(name,age,**kv):
d = {'name':name,'age':age}
d.update(kv)
return(d)
student('LiLei',19,grade = '13',gender = 'male')
Jim = {'name':'Jim','age':18,'grade':'13','hometown':'London'}
student(**Jim)
#2,递归函数
#递归函数调用自身
def fib(n):
if n in [1,2]:
return(1)
else:
return(fib(n-1) + fib(n-2))
fib(20)
#3,装饰器
#装饰器在不更改函数代码前提下赋予函数额外的功能
#通常把函数非核心逻辑如插入日志、权限校验、性能测试放在装饰器中
import time
def runtime(func):
def wrapper(*args,**kv):
tic = time.time()
ans = func(*args,**kv)
toc = time.time()
print('{} is called. {}s used'.
format(func.__name__,toc-tic))
return(ans)
return(wrapper)
@runtime
def my_sum(*args):
s = 0
for i in args:
s = s + i
return(s)
# @runtime是一个语法糖
# 相当于 my_sum = runtime(my_sum)
my_sum(*range(100))
my_sum(1,2,3) #相当于 runtime(my_sum)(1,2,3)
@runtime
def fib(n):
if n in [1,2]:
return(1)
else:
return(fib(n-1) + fib(n-2))
fib(4)
十五,lambda匿名函数
lambda只是一个表达式,适合定义较为简单的函数。
lambda函数的定义语法是:
fun = lambda 参数序列:返回值表达式
一般来说通过使用lambda匿名函数可以节约程序开支并加快运行速度。
my_abs = lambda x: x if x>=0 else -x
my_abs(-5)
my_power = lambda x,n=2:x**n
my_power(-5)
(lambda x,n=2:x**n)(-5,3)
my_sum = lambda *args:sum(args)
my_sum(1,2,3)
student = lambda name,age,**kv:dict(name = name,age = age,**kv)
student('LiLei',18,grade = '13')
d = {'name':'LiLei','age':18}
d.update({'grade':'13'})
d
type(d.update({'grade':'13'}))
fib = lambda n: 1 if n in [1,2] else fib(n-1)+fib(n-2)
fib(10)
十六,高阶函数
以函数为参数的函数叫做高阶函数。常用的内置高阶函数有:map,reduce,filter。
高阶函数和匿名函数搭配使用,堪称绝配。
# 1,map将一个函数作用到一个序列或者多个序列配对
#map英文单词原意:映射
list(map(lambda x:x**2,[1,2,3,4]))
list(map(lambda x,y:x+y,'abc','123'))
### 2,reduce 将一个带有两个参数的函数依次迭代作用到一个序列
#reduce英文单词原意:减少
#reduce(f,[a,b,c,d]) = f(f(f(a,b),c),d)
from functools import reduce
reduce(lambda x,y:x+y,[1,2,3,4])
### 3,filter 根据规则过滤序列中的元素
#filter英文单词愿意:过滤
list(filter(lambda x:x>0,[-1,-2,1,2]))
十七,Python推导式
Python中的推导式是我最喜爱的一类语法规则,没有之一。
Python推导式可以生成列表,字典和集合。
Python推导式虽然简单,但表达能力很强,可以实现map,filter等功能,并且可以多重遍历。
淋漓尽致地体现了Python语言的simple,readable,powerful的特点。
### 1,列表推导式
#生成平方数序列
[x**2 for x in range(4)]
#求序列的绝对值
l = [-1,-2,3,4,-2]
[x if x>0 else -x for x in l]
list(map(lambda x:x if x>0 else -x,l))
#过滤序列中某些元素
[x for x in l if x>0]
list(filter(lambda x:x>0, l))
#多重遍历
girls = ['Mary','Lily']
boys = ['Jim','John']
couples = [(b,g) for b in boys for g in girls]
couples
### 2,字典推导式
seasons = ['Spring','Summer','Autumn','Winter']
d = {k:v for k,v in enumerate(seasons,start = 1)}
d
list(enumerate(seasons,start = 1))
keys = ['a','b','c']
values = [1,2,3]
D = {k:v for k,v in zip(keys,values)}
D
### 3,集合推导式
{abs(x) for x in [-1,-2,1,2,3]}
# 求两个集合的交集
a = {1,2,5,4}
b = {2,4,6,8}
a.intersection(b)
{x for x in a if x in b}
十八,类和对象
1,面向对象基本概念
- 什么是面向对象编程?
POP: Process Oriented Programming. 程序被看成一系列命令的依次执行。基本封装形式为函数。 设计函数的基本要点是 IPO:输入Input ——> 处理Process ——> 输出Output.
OOP: Object Oriented Programming. 程序被看成一系列对象的相互作用。基本的封装形式是类。 设计类的基本要点是 RPM: 关系 Relation, 属性Property,方法 Method. 类和类之间常用的方法包括:is(继承关系), has(包含关系), use(使用关系)
- 面向对象基本术语?
类: class, 抽象数据结构,数据和算法的封装。如:定义一个类:dog。
对象: object, 类的实例。如:dog类的一个实例:点点dot。
属性:properties,和对象关联的数据部分。如:weight 体重,breed 品种。
方法:methods,和对象关联的算法部分。如:run(), eat(), bark()。
- 面向对象编程的优点?
容易使用: 封装,奇妙的句点符号。
容易扩展: 继承,多态。
### 2,创建类和对象
class Dog(object):
def __init__(self,name,weight,breed,age):
self.name = name
self.weight = weight
self.breed = breed
# __age为私有属性
self.__age = age
def run(self):
print('%s is running...'%(self.name))
def bark(self):
print('Bowwow,Bowwow,Bowwow...')
def eat(self,food):
print('%s is eating %s...'%(self.name,food))
def sleep(self):
print('Zzz...Zzz...Zzz...')
# __think为私有方法
def __think(self):
print('I feel myself a hero and very handsome !')
# speak公有方法可以调用私有方法
def speak(self,words = ''):
self.__think()
if(words):print(words)
# 实例化一个对象
snoopy = Dog('snoopy',3,'Husky',4)
#调用公有属性和公有方法
snoopy.breed
snoopy.run()
snoopy.bark()
snoopy.eat('meat')
snoopy.sleep()
snoopy.speak('HaHaHa!!!')
#私有属性和私有方法不能够直接在类外部访问。
# snoopy.__age
# snoopy.__think()
### 3,获取对象信息
#python中万物皆对象
# type查看对象类别
type(1),type(False),type(snoopy),type(len),type([1,2,3])
# isinstance 测试某个对象是否属于某个类
isinstance({1,2,3},set)
isinstance(max,object)
# object是the most base type
print(isinstance(123,(list,str,float,int)))
十九,封装和继承
1,封装
奇妙的句点符号:通过奇妙的句点符号可以召唤对象的属性和方法。 私有属性和私有方法除外。
公有属性和公有方法: 无特定标识为共有属性和公有方法
私有属性和私有方法:以双下划线开头
定制属性和定制方法:以双下划线开头和双下划线结尾 例如: __init__ 构造函数,通过类名调用 __str__ 通过str函数调用 __len__ 通过len函数调用 ……
类属性和类方法:在__init__外部定义的为类属性, 第一个参数不是self参数的方法为类方法。
class Animal(object):
#类属性
home = 'earth'
#类方法
def dream():
print('No deal, no hurt!')
#定制方法
def __str__(self):
return('An animal named %s'%self.name)
def __init__(self,name,weight,breed,age):
self.name = name
self.weight = weight
self.breed = breed
# __age为私有属性
self.__age = age
def run(self):
print('%s is running...'%(self.name))
def eat(self,food):
print('%s is eating %s...'%(self.name,food))
def sleep(self):
print('Zzz...Zzz...Zzz...')
# __think为私有方法
def __think(self):
print('I feel myself a hero and very handsome !')
# speak公有方法可以调用私有方法
def speak(self,words = ''):
self.__think()
if(words):print(words)
#类属性
snoopy = Animal('snoopy',3,'Husky',4)
snoopy.home
Animal.home
# 通过对象能够访问,但不能够修改类属性
#snoopy.home = 'moon'
# 类方法只能通过类名访问,不能通过对象访问
Animal.dream()
# 通过类名也可以访问对象方法
Animal.run(snoopy)
snoopy.run()
# 定制方法有特殊的功能
str(snoopy)
# 奇妙的句点符号
s = 'abc#123@def'
#面向过程必须记住非常多函数名,replace,upper,find
#面向对象只需要输入奇妙的句点符号后按下tab键
s.replace('#','').replace('@','')
len(s)
s.__len__()
dir(s) # 查看全部可用属性和方法
### 2,继承
#子类可以通过继承获得父类的属性和方法
class Cat(Animal):
def call(self):
print('MiaoMiaoMiao...')
kitty = Cat('kitty',1,'Bose',5)
kitty.call()
kitty.speak('miaow...miaow...miaow...')
二十,模块和包
一个.py文件就是一个模块。 一个包含有__init__.py文件的文件夹就是一个包。
1,模块示范
%%writefile mymodule.py
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
'a test module' #模块注释
__author__ = 'Python_Ai_Road' #作者信息
__version__ = 'v1.0' #版本信息
def _Email(): #模块私有函数
print('lyhue1991@163.com')
def __WeChat_Official_Account(): #模块私有函数
print('Python与算法之美')
def hello(person = 'world'): #公有函数
print('hello',person)
def test(): #测试代码
hello()
hello('China')
print('Contact to me:',end = 't')
_Email()
print('Learn more with me:', end = 't')
__WeChat_Official_Account()
#当直接运行该模块时,执行测试代码,而引入模块时不执行测试代码。
if __name__ == '__main__':
test()
import mymodule
help(mymodule)
mymodule.__author__
mymodule.__doc__
!python mymodule.py
2,包示范
!mkdir Animal
%%writefile Animal/__init__.py
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
'Animal module for fun!' #模块注释
__author__ = 'Python_Ai_Road' #作者信息
%%writefile Animal/Animal.py
class Animal(object):
def __init__(self,name):
self.name = name
%%writefile Animal/Dog.py
from Animal.Animal import Animal
class Dog(Animal):
def call(self):
print('bowwow...bowwow...bowwow...')
%%writefile Animal/Cat.py
from Animal.Animal import Animal
class Cat(Animal):
def call(self):
print('miaow...miaow...miaow...')
import Animal
help(Animal)
from Animal.Dog import Dog
snoopy = Dog('snoopy')
snoopy.call()
from Animal.Cat import Cat
kitty = Cat('kitty')
kitty.call()
最后
以上就是耍酷棒球为你收集整理的python series拼接_3小时Python入门的全部内容,希望文章能够帮你解决python series拼接_3小时Python入门所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复