当前分类 / Python / 总共8篇

Python基础知识总结

Python 的火热度怕是大家已经早已感受到了,很多程序员将 Python 作为了他的第二语言,如果你至今还未接触任何和 Python 相关的知识,那么今天我带给你的这篇文章可以让你快速了解 Python 语法,上手做东西了。

Python 语言的特点

Python 是一种解释性语言

编译型语音:在程序执行前,会通过编译器将程序(代码)转换为机器语言(计算机可以看懂的语音),比如C语音。

解释型语音:没有编译过程,在程序执行的时候通过解释器对程序逐行解释然后直接运行。

比较:因为编译型语音在执行前已经做了编译(翻译给计算机),所以执行比较快(执行过程中不需要翻译)。

Python 是面向对象的语言

面向过程:一般就是先分析解决问题需要的步骤,然后用函数把这些步骤一步步实现,然后依次调用(比较接近计算机的思考方式)。

面向对象:把问题中的各个事物分解(抽象)成各个对象,通过对象之间交互来实现(和我们人类的思考方式更接近)。

Python 比较适合初学者

Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

阅读更多

Python为什么现在这么火

Python 国内的发展概况

几年前 Python 在国内还只是一门小众语言,但从 2011 开始到现在,Python 的百度搜索指数翻了 10 倍,从下图看得出 Python 在国内的流行度已经直逼 Java,大有赶超之势。

2017年的百度指数趋势图

上图是 2017 年的百度指数趋势图,最近我又比较了Python, Java, PHP 和 JavaScript 发现 Python 几乎是其他的 2 到 3 倍甚至 4 倍还多。难道现在很多公司都在用 python 吗?还是说这个指数只是说明关注和学习的人多了。

2017年到2019年的百度指数趋势图

阅读更多

Python脚本实现的百度熊掌号链接提交

我们为了提高网站的收录量,最好通过API主动提交给搜索引擎,之前在 Hexo 中有比较好用的 hexo-baidu-url-submit 插件,而使用 hugo 后没找到比较合适方便的,于是便想到使用 python 提交到百度服务器,根据官方文档和示例,使用 http.client 实现的 POST 提交。

http.client 模块定义实现了 HTTP 和 HTTPS 协议的客户端类,API 如下:

class http.client.HTTPConnection(host, port=None, [timeout, ]source_address=None, blocksize=8192)

HTTPConnection 的实例代表与 HTTP 的一个连接事务。 它的实例化应当传入一个主机和可选的端口号。 如果没有传入端口号,如果主机字符串的形式为 主机:端口 则会从中提取端口,否则将使用默认的 HTTP 端口(80)。 如果给出了可选的 timeout 参数,则阻塞操作(例如连接尝试)将在指定的秒数之后超时(如果未给出,则使用全局默认超时设置)。 可选的 source_address 参数可以为一个 (主机, 端口) 元组,用作进行 HTTP 连接的源地址。 可选的 blocksize 参数可以字节为单位设置缓冲区的大小,用来发送文件类消息体。

举个例子,以下调用都是创建连接到同一主机和端口的服务器的实例:

>>> h1 = http.client.HTTPConnection('www.python.org')
>>> h2 = http.client.HTTPConnection('www.python.org:80')
>>> h3 = http.client.HTTPConnection('www.python.org', 80)
>>> h4 = http.client.HTTPConnection('www.python.org', 80, timeout=10)

此模块中定义的常量为:

http.client.HTTP_PORT HTTP 协议默认的端口号 (总是 80)。

http.client.HTTPS_PORT HTTPS 协议默认的端口号 (总是 443)。

阅读更多

Python实现的图片压缩处理工具

前言

最近在博客中做了一个相册功能,但是问题是我的图片都很大,用图片压缩工具压缩了一遍感觉不是很方便,于是就搜了一下python相关工具,后来发现知乎上的一篇文章《如何用Python智能批量压缩图片》,这里感谢作者提供了思路,短短几行代码实现了图片压缩需求。

最后添加了图片水印功能,可以方便配置图片路径来实现压缩和水印添加,本来打算使用Tkinter来实现一个图片界面方便操作,后来想想还是把精力放在核心逻辑上面吧,其实使用图形界面不见的就很方便,这样修改配置其实更方便些,如果你想实现成图形界面可参考我的另一篇博文《Python两个案例练习》

知识点

内置模块和第三方模块

在python中,一个.py文件就可以理解为一个模块,模块之间可以互相引用。

模块分为三种:自己写的、内置的、第三方的。

内置模块一般存放在安装目录的lib目录下,第三方库一般存放在安装目录的lib\site-packages目录下。第三方库使用前需要提前安装,例如Python操作图像的模块PIL需要提前安装。

阅读更多

Python做Hexo博客编辑和发布工具

这几天发生了一些意外,我的固态硬盘奇迹般的坏了,上周四倒腾了一天最终还是丢失了很多文件和我之前写的很多工具脚步,后来又忍痛买了一个新的固态盘。这件事让我对文件备份有了新的认识,也是通过这件事我琢磨准备做一个博客自动备份、编辑和发布的工具。

这个是我做的一个雏形,基本上已经能满足我大部分需求了,但是还不足以让大家使用,我慢慢抽时间修改和迭代吧,中间还有一些技术问题现在还未解决。

阅读更多

Python图形界面Tkinter的使用详解

本文参考自莫烦python视频:https://morvanzhou.github.io/tutorials/python-basic/tkinter/

导入模块

import Tkinter  #注意python 3.0改为了tkinter

或者直接这样导入

from TKinter import *

最简单的界面

注意我的python版本是:2.7.15

#!/usr/bin/python
# -*- coding: UTF-8 -*-

from Tkinter import *

top = Tk()
top.mainloop()

Label和Button

#!/usr/bin/python
# -*- coding: UTF-8 -*-

#3.0版本请使用 import tkinter as tk
import Tkinter as tk

window = tk.Tk() 
window.title('我的窗口')  #添加标题
window.geometry('400x200')  #设置window大小

v = tk.StringVar(None, 'i am a label', None)  #文字变量存储器

#width=15表示15个字符宽度,heiht=2表示2个字符高度,如果直接设置文本可以用text='labeltext'
lable = tk.Label(window, textvariable=v, bg='green', font=('Arial', 12), width=20, height=2)
lable.pack()

on_hit = False
def click_me():  #按钮点击处理方法
    global on_hit
    if on_hit == False:
        on_hit = True
        v.set('clicked you ...')
    else:
        on_hit = False
        v.set('')

button = tk.Button(window, text="click me", width=15, height=2, command=click_me)
button.pack()

window.mainloop()

阅读更多

AndroidStudio 多个 AppId 多渠道快速打包

一直感觉 AndroidStudio 没有 eclipse 快,但是最近由于遇到一个问题不得不将工程迁移到 AndroidStudio 上,迁移后之前在 eclipse 上所做的所有批量打包又得重新在 AndroidStudio 上搞一遍,不得不说这个过程远比我想象的让人愉快,AndroidStudio 的强大和好用改变了之前我对这个 IDE 的偏见,无疑这个 IDE 是开发 Android 的最好工具。

普通打包配置

defaultConfig {
    applicationId myAppId
    minSdkVersion 14
    targetSdkVersion 19
    versionCode vCode
    versionName vName
    testApplicationId "com.xx.xxx.test"
    testInstrumentationRunner "android.test.InstrumentationTestRunner"
    multiDexEnabled true
    signingConfig signingConfigs.releaseConfig
    manifestPlaceholders = [package_name: myAppId, app_icon: myAppIcon,
                            app_name: myAppName, umeng_appkey: umengAppKey,
                            main_menu_json: mainMenus, main_app_change_string:appChangedText]
}

这个配置是一个默认配置项,我们可以将一些公共的东西配置在这里,在这里可以看到我对 AppId (也就是通常说的包名)用一个变量进行配置,因为在我的工程中同一个源码要打多个应用(AppId),像这样的需求应该不多见,但是你总有一天会碰到。

阅读更多