一、关于安装
1.python环境安装
https://www.cnblogs.com/Yanjy-OnlyOne/p/9764143.html
2.IDE pycharm安装,用python自带的IDE IDLE也不错
https://blog.csdn.net/qq_15698613/article/details/86502371
关于pycharm的破解,试了很多方法,永久破解的方法基本都失效了,还是乖乖的用激活码吧。。http://idea.lanyus.com/
二、基础知识
先抛一段代码
from datetime import datetime
odds = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
41, 43, 45, 47, 49, 51, 53, 55, 57, 59]
for i in range(5):
right_this_minute = datetime.today().minute
if right_this_minute in odds:
print("This minute seems a little odd.")
else:
print("Not an odd minute.")
是不是很简单,下面知识点要记小本本啦
1.python中的变量随用随定义,不需要声明一个变量的类型。在python中为一个变量赋值时,她会自动获取相应数据的类型
2.函数+模块=标椎库,python提供了一个强大的标准库,允许你访问大量可重用的模块(datatime就是其中的一个例子)
import sys
sys.platform #操作系统内核名
import os
os.getcwd() #获得当前目录
os.environ #访问系统的全部环境变量
os.getenv('HOME')#单独访问某一环境变量
import datetime
datetime.date.today()#获得今天日期
datetime.date.isoformat(datatime.date.today())#将今天日期转换成一个字符串
import time
time.sleep(5)
import random
dir(random)#显示该模块的所有属性
random.randint(1,60)#获取随机数
help(random.randint)#使用heip读取python文档
#for循环
for i in[1,2,3]:
print(i)
for ch in 'Hi!':
print(ch)
for num in range(5):
print('hello world')
for循环可以迭代固定次数,可以迭代处理任意的序列(如列表和字符串),也可以执行固定的次数(利用range函数)
再来一段简单的代码吧
word = "bottles"
for beer_num in range(99, 0, -1):
print(beer_num, word, "of beer on the wall.")
print(beer_num, word, "of beer.")
print("Take one down.")
print("Pass it around.")
if beer_num == 1:
print("No more bottles of beer on the wall.")
else:
if (beer_num - 1) == 1:
word = "bottle"
print(beer_num - 1, word, "of beer on the wall.")
print()
Python中一切都是对象,而且所有对象都可以赋给变量
放一张近期看到的形象生动富有感染力的图片
认识四个内置的数据结构
1.列表:有序的可变对象集合[]
列表就像一个数组
vowels = ['a','e','i','o','u']
word = "Milliways"
found = []
for letter in word:
if letter in vowels:
if letter not in found:
found.append(letter)
for vowel in found:
print(vowel)
num = [1,2,3,4]
num.remove(3)#删除某个值
num.pop()
num.pop(0)#0是索引值
num.extend([4,5])#提供一个对象列表,追加到现有列表
num.insert(0,1)#取一个索引值和一个对象作为参数
下面这段代码能看懂吧
phrase = "Don't panic!"
plist = list(phrase)
print(phrase)
print(plist)
for i in range(4):
plist.pop()
plist.pop(0)
plist.remove("'")
plist.extend([plist.pop(),plist.pop()])
plist.insert(2,plist.pop(3))
new_phrase = ''.join(plist)
print(plist)
print(new_phrase)
列表适合存储相关对象的集合;
列表与其他语言的数组很类似,不过列表可以根据需要动态收缩和扩展;
对象列表用中括号包围,对象之间用逗号分割,空列表表示为[]
列表的复制用copy()方法;
列表支持中括号记法:letter[start:stop:step],支持负索引,可以用中括号记法从任何列表选择单个对象
phrase = "Don't panic!"
plist = list(phrase)
print(phrase)
print(plist)
new_phrase = ''.join(plist[1:3])
new_phrase = new_phrase + ''.join([plist[5],plist[4],plist[7],plist[6]])
print(plist)
print(new_phrase)
列表的方法悔会改变一个列表的状态,而使用中括号记法和切片通常不会改变列表状态
2.元组:有序的不可变对象集合()
元组是一个不可变的列表
元组用小括号包围,而列表用中括号
只有一个对象的元组
t = ('python',)#没逗号的话是字符串
3.字典:无序的键值对集合{}
字典存储键值对;
字典不会维持插入时的顺序;
访问字典中的数据要使用中括号。将键放在中括号里可以访问与这个键关联的值;
for循环可以迭代的处理一个字典,每次迭代时,键会付给循环变量,用来访问数据值;
字典的键必须初始化。
item方法允许按行迭代处理一个字典,按键值对迭代处理。一次迭代中,items方法会向for循环返回下一个键和他的关联值。
vowels = ['a', 'e', 'i', 'o', 'u']
word = input("Provide a word to search for vowels: ")
found = {}
for letter in word:
if letter in vowels:
found[letter] += 1
for k, v in sorted(found.items()):
print(k, 'was found', v, 'time(s).')
4.集合:无序的唯一对象集合{}
集合不允许有重复的对象
vowels = ['a','e','i','o','u']
vowels = set(vowels)#用set方法快速生成一个集合,可以向set函数传递任何序列,有这个序列中的对象创建一个元素集合(去除所有重复)
word = 'hello'
u = vowels.union(set(wod))#并集
d = vowels.difference(set(word))#找出不是共有的元素
i = vowels.intersevtion(set(word))#报告共有对象
sort(list())#转变为一个有序列表
vowels = set('aeiou')
word = input('provide a word to search for vowels:')
found = vowels.intersection(set(word))
for vowel in found:
print(vowel)
美观打印
pprint()
三、函数与模块
引入函数:
1.函数引入了两个新关键字:def和return
2.函数可以接收参数数据
3.函数包括代码、(通常还有文档),要为一个代码增加一个多行注释,需要用三重引号包围注释文本
函数时命名的代码块
python允许将任何对象作为参数发送给函数,而且允许将任何对象作为返回值返回。解释器不关心也不检查这些对象的类型是什么(他只检查是否提供了参数和返回值)
函数可以接受多个命名参数,也可以没有参数
def search4vowels(phrase:str) ->set:
"""Returns the set of vowels found in 'Phrase'."""
return set('aeiou').intersection(set(phrase))
def search4letter(phrase:str,letters:str = 'aeiou') ->set:
"""Returns the set of 'letters' found in 'phrase'."""
return set(letetrs).intersection(phrase)
bool函数
可以向bool函数传递任何值来确定他是True还是False
严格来讲,任何非空的数据结构都计算为True
使用注解来帮助建立函数文档,并使用“help”BIF查看注解
函数出了位置赋值,还可以使用关键字。使用关键字时,任何顺序都是可以的(因为使用关键字可以去除任何二义性,位置不在重要)
函数构成模块
查看模块时,你的解释器会在三个主要模块搜索模块,分别是
1、你的当前工作目录
2、你的解释器的site-packages位置
3、标准库的位置
使用“setuptools”将模块安装到site-packages
1.创建一个发布描述
创建两个文件,一个setup.py,一个README.txt,并把这两个文件和要安装的模块放在同一个文件夹下
from setuptools import setup
setup(
name='vsearch', #name参数指定发布包。常见的做法事按模块命名发布包
version='1.0',
description='The Head First Python Search Tools',
author='HF Python 2e',
author_email='[email protected]',
url='headfirstlabs.com',
py_modules=['vsearch'],#这是包含在这个包中的所有“.py”文件的列表
)
2.创建发布文件
在windows命令提示窗口键入如下代码
py -3 setup.py sdist
命令成功执行后,这三个文件已经合并到一个发布文件中,这是一个可安装文件,包含了你的模块的源代码,在这里这个文件名为你会在一个名为vsearch-1.0.zip,dist中找到新创建建的这个zip文件。
3.安装发布文件
py -3 -m pip install vsearch-1.0.zip
这三个步骤就可以确保把模块安装到site-packages位置了,之后你就可以import了
python的函数参数语义既支持按值调用也支持按引用调用
列表、字典和集合(都是可变的)总是按引用传入函数
字符串、整数和元组(不可变)总是按值传入参数