Python (基础例子)

Python 基础中的基础例子
纯菜鸟笔记,目录:

  • 一、配置Python环境
  • 二、IDE
  • 三、简略语法
  • 四、代码例子
  • 五、创建库/模块

在这里插入图片描述

前言:
Python是一种面向对象的动态类型跨平台的计算机程序设计语言,优点开源,库多。
主要应用于:
1、Web应用
例如网站:youtube、instagram
2、 AI人工智能与机器学习
AI人工智能的官方标配程序语言
3、网络爬虫
在网上搜索数据,爬虫框架:scrapy,HTTP请求库:Requests
4、数据分析
分析从网上得来的数据,常用可视化库:seaborn,回归计算:pandas、numpy、scipy
5、等等。。。
这里主要记录最简单的步骤实现写起步操作,安装与简单语法规则。

一、配置Python环境

当前测试环境为最基础的搭建环境,Python3.8 +自带的 IDLE编辑器
Python3.8 windows配置环境下载:python-3.8.1.exe
下载安装,安装时勾上自动配置path环境(否则得自己配置),安装完成后,在命令行cmd里输入python既可以测试是否安装成功。

二、IDE

  • IDLE:上一步安装时,是附带了个原版简单的IDLE编辑器的(简单得像极了纯净的爱情),所以可以在开始里找到IDLE打开。然后新建文件,就可以开始写代码了,这是最快的方式不到2分钟。。。
  • 正常开发推荐的IDE: VS codeWingIDEPyCharmVim IDE

三、简略语法

1、Python 的代码结构的是需要首字母缩进4个空格(不是Tap键),与java和c等在编辑上第一大区别,缩进格式错误则编译错误。
2、控制语句:

  • if,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
  • in,判断一个对象是否在一个字符串/列表/元组里。
  • for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
  • while,当条件为真时,循环运行语句块。
  • try,与except,finally配合使用处理在程序运行中出现的异常情况。
  • class,用于定义类型。
  • def,用于定义函数和类型的方法。
  • pass,表示此行为空,不运行任何操作。
  • assert,用于程序调试阶段时测试运行条件是否满足。
  • with,Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加密,然后在语句块运行退出后解密。
  • yield,在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。- 这个语句变成一个运算符。
  • raise,制造一个错误。
  • import,导入一个模块或包。
  • from import,从包导入模块或从模块导入某个对象。
  • import as,将导入的对象赋值给一个变量。

3、表达式:

  • 运算符: - +, -,*, /, //, **, ~, %表示加,减,负、乘、除、整除、乘方、补(非)、余。>>, <<表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, ==, !=, <=, >=`表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, <<, >>只应用于整数。
  • 列表 List :[1,2,3],支持列表切割如:list[1,2] ,意思为截取列表1到2
  • 元组 tuple:(1,2,3),赋值:x,y=1,2 ,交换:x,y = y,x
  • 双引号和单引号效果一样都是括字符,它们可以彼此互相包裹区分
  • 列表推导式: num = sum(x * x for x in range(10))(0-9的平方和)结果:num = 285
  • 逻辑运算:and, or, not
  • 条件表达式 : f = y if cond else x 释义:cond为真时f=y,为假时f=x
  • 判断对象是否相等:is, is not,判断是否属于对象:in, not in
  • 匿名函数:add=lambda x, y : x + y 则后面可以引用:add(1+2)
  • Python函数支持递归、默认参数值、可变参数,但不支持函数重载。

四、代码例子

  • 这里记录的是IDLE就可以编写的小例子,注意缩进格式:

1、输出函数,就一句,按F5编译

print("Hello Python! \r\n ")	#打印输出

2、引用turtle库,画几个圆

import turtle           #引用turtle库\模块,可以画画的库
'''
画个两个圆圈
'''
turtle.pensize(2)       #线条大小
turtle.circle(40)       #画圆
turtle.circle(20)       #画圆
turtle.done()           #关闭turtle

3、画个循环圈线的图

import turtle as t      #引用turtle库/模块
'''
画个循环圈线的图
'''
t.color('red')          #颜色
for i in range(100):    #循环次数
    t.fd(i)         #长度为i
    t.left(70)      #角度左偏角度
t.done();

4、画一个实心红色五角星

from turtle import*     #引用turtle库/模块
'''
绘画一个实心红色五角星
'''
color('red','red')      #颜色
begin_fill()            #实心填充起点
for i in range(5):      #for循环5次
    fd(200)             #线长200
    rt(144)             #转角角度右偏144度
end_fill()              #实心填充终点
done()                  #关闭turtle

5、循环检测键入数值,判断并输出

'''
简单判断输入数值类型,输出
'''
print("提示:输入“exit”退出!\r\n")
while(1):       #while死循环
    mun=input("请输入数字:")
    if mun=="exit":
        print("已退出!\r\n")
        break
    if  mun.replace(".","").isdigit():  #判断是否全为数字
        if mun.count(".")!=0:           #判断是否存在点 .
            print("这是个float数!"+mun+"\r\n")   
        else:
            print("这是个int数!"+mun+"\r\n")
    else:
        print("输入的格式错误!"+mun +"\r\n")

5、创建一个学生class类

'''
创建class类,保持文件名与类名相同
'''
class student(object):
    def __init__(self, n, a):   #__init__魔法函数,(self相当于this)定义构造方法,
        self.name = n;          # 设置属性name
        self.age = a;           #设置属性age
    def __str__(self):          # __str__魔法函数,初始化定义时调用的print()从此返回数据
        return "name:%s age:%d"%(self.name, self.age);    
    def pt(self):               #自定义的一个方法
        print ("name:%s age:%d"%(self.name, self.age));
marry = student("玛丽",18);
print(marry);

6、新建个外部文件调用上面例子5的student class类

'''
调用student.py,并且两个.py文件保存在同个文件夹下
'''
from student import student     #引用student class类,同文件夹中引用
f=student("lili",20)            #实例化新的student
f.pt();                         #调用student的pt()方法

7、网络请求
创建模块httpget.py,本身无输出功能,创建了inface抽象类接口,将在第8例调用

import urllib.parse,urllib.request
import _thread,time,traceback,sys,json
from urllib import request
from abc import ABCMeta,abstractmethod
fileaddr=r"C:\Users\Hesiod\Desktop\test1.html"
'''-----------定义接口------------'''
class inface(metaclass=ABCMeta):
    #__metaclass__ = ABCMeta #指定这是一个抽象类
    @abstractmethod  #抽象方法
    def reshtml(self,htmltxt):
        pass
    @abstractmethod  #抽象方法
    def resjson(self,jsontxt):
        pass
    @abstractmethod  #抽象方法
    def myprint(self,msg):
        pass
'''---------初始化方法-----------'''
def initurl(tag):
    # 定义请求数据,并且对数据进行赋值
    url = "http://www.kuaidi100.com/query"
    values={}
    values['type']= 'yuantong'
    values['postid']= '11111111111'
    data = urllib.parse.urlencode(values)   #对请求数据进行编码
    #data为字符:type=yuantong&postid=11111111111       (GET)    
        #data = urllib.parse.urlencode(values).encode('utf-8')
        #data为字节:b'type=yuantong&postid=11111111111'    (POST)
    reqkd = url + '?' + data                # 拼接,将返回快递测试号的json数据
    reqbd = "https://huiyi.csdn.net/"    #返回CSDN活动html,这里只能保存小网页
    reqhao = "https://www.hao123.com"  #返回hao123的首页html
    if (tag==0):
        return reqkd
    elif(tag==123):
        return reqhao
    else:
        return reqbd
#开启线程方法
def start_get(self,geturl):
    _thread.start_new_thread(httputil,(self,geturl,))
def start_out(self,htmltxt):
    #f_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
    _thread.start_new_thread(output,(self,htmltxt,))
'''--------------数据获取,线程方法函数------------------'''
#定义一个向Web请求数据的线程方法
def httputil(self,geturl):
    try:
        response = urllib.request.urlopen(geturl)   # 打开请求,获取对象
        self.myprint(response.status)      # 打印Http状态码,成功为200
        if(response.status==200):
            #读取服务器返回的数据,对HTTPResponse类型数据进行读取操作
            restype = response.headers['Content-Type']
            if "text/html" in restype:
                the_page = response.read()
                res = the_page.decode("utf-8")
                if (ck_json(res)):
                    self.resjson(res)
                else:
                    self.reshtml(res)
                self.myprint(geturl+"\r接收成功!\r\n")
            else:
                self.myprint("收到一个文件:"+restype )
        else:
            self.myprint("get返回失败!\r\n")
    except:
        self.myprint("get请求异常!\r\n")
        traceback.print_exc(file=sys.stdout)
    finally:
        self.myprint("end\r\n")
#判断是否为json数据
def ck_json(data):
    try:
        json.loads(data)
    except:
        return False
    return True       
#输出txt文本方法        
def output(self,htmltxt):
    try:
        with open(fileaddr,"w") as f:
            f.write(htmltxt)  #写完自动执行close()
        self.myprint("输出文本成功!\r\n")
    except:
        self.myprint("输出文本异常!\r\n")
    finally:
        self.myprint("输出线程结束!\r\n")

8、网络请求,调用第7例:网络模块,要和第7例放在同个文件夹里,或者按第五点说的创建模块。

from httpget import *
import json
fileaddr=r"C:\Users\Hesiod\Desktop\test1.html"      #重写保存位置:fileaddr
class my_face(inface):		#重写抽象继承inface接口类
    def __init__(self,geturl):		#重写的inface四个方法都要写上
        print("start")
        start_get(self,geturl)
    #如果接收的是html
    def reshtml(self,htmltxt):
        print("收到html:\r\n",htmltxt)
        start_out(self,htmltxt)
    #如果接受的是json   
    def resjson(self,jsontxt):
        mjson = json.loads(jsontxt)
        sjson = json.dumps(mjson,sort_keys=True,ensure_ascii=False,indent = 1,)
        print("收到json:\r\n"+sjson)
    #打印    
    def myprint(self,msg):
        print("提示:",msg)
#----------主函数-----------
f=my_face(initurl(0))      #实例化,0为json,其他为csdn活动.html,123为hao123.html
f.myprint("my_face")

五、创建库/模块

一、最简单的本地通用模块:

  • 1、 把前面例子5中的student例子,拷贝到安装包目录的Lib\site-packages下,文件名可以改为:people.py(不改也可以),就和库一样哪里都可以调用了。
  • 2、调用的方法
import people		#调用自定义的people库
s = people.student("kimi",22)	#实例化库里面的student类
s.pt();				#调用类里面的pt()方法

二、创建本地库包:
在当前文件夹中,新建个myku文件夹,底下:
1、 创建 __init__.py文件,python3.3后可以不创建:

__all__=['man']		#指向所有声明的文件,这里man(.py)在下一步创建

2、 把前面例子5的student例子拷贝进来,改名为man.py(不改也行);

3、 调用方法,在与myku文件夹同一层目录创建的.py,调用如下:

from myku import man as m
s=m.student("Bob",24)
s.pt()

三、开源库
新手就先不要学开源了,不仅占资源,还给可能大伙添麻烦!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值