Python基础语法

笔记

第0关 print()函数与变量

第1关 数据类型与转换

第2关 条件判断与条件嵌套

  • 条件判断的三种形式:
1
单向判断:if
2
双向判判断:if...else
3
多向判判断:if...elif ...else
4
5
#条件
6
if xxxx:
7
	#做点什么
8
	print(xxxx)
9
命令逻辑:如果...就...
10
命令格式:if条件后面跟英文冒号,回车后自动缩进

第3关 input()函数

搭建Python开发环境(Mac)

介绍

Python官网:

https://www.python.org/

Python官方文档:

https://docs.python.org/

环境搭建

###简介

pipenvPython官方推荐的包管理工具。可以说,它集成了virtualenv, pippyenv三者的功能。其目的旨在集合了所有的包管理工具的长处,如: npm, yarn, composer等的优点。

它能够自动为项目创建和管理虚拟环境,从Pipfile文件添加或删除安装的包,同时生成Pipfile.lock来锁定安装包的版本和依赖信息,避免构建错误。

pipenv主要解决了如下问题:

  • 不用再单独使用pipvirtualenv, 现在它们合并在一起了
  • 不用再维护requirements.txt, 使用PipfilePipfile.lock来代替
  • 可以使用多个python版本(python2python3)
  • 在安装了pyenv的条件下,可以自动安装需要的Python版本

准备

1、pyenv是什么?

pyenv是Python版本管理工具,利用它我们可以在同一台电脑上安装多个版本的Python,这个过程非常简单。

2、 pipenv是什么?

pipenv是Python官方推荐的包管理工具,用来管理安装包的。类似于npm包。

3、利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境。

1. 安装pyenv—用来安装多个Python版本

1.1、安装或升级pyenv
首先安装pyenv,如果你是Mac电脑,那么推荐使用Homebrew来安装。

1
brew update
2
brew install pyenv

1.2、用pyenv安装Python
安装完pyenv,安装Python就简单了。我电脑上系统自带的是Python2.7.10,我准备再安装一个Python2.7.14和Python3.6.4,以后开发时候就用自己安装的Python2.7.14或者Python3.6.4了。

1
pyenv install 3.6.4 2.7.24 
2
pyenv rehash

执行命令pyenv versions,如果输出结果如下,那么说明我们已经安装好了Python2.7.14和Python3.6.4:

1
pyenv versions
2
  system
3
* 2.7.14 
4
* 3.6.4

现在我们就可使用Python2.7.14和Python3.6.4了。执行这个下面python2、python3、python指令可以进入到不同版本的Python环境。

pyenv global属于全局切换,pyenv local属于局部切换,局部切换只在所在切换时的目录中生效。可以通过如下命令来切换版本:

1
$: pyenv global 3.6.4
2
$: pyenv versions
3
  system
4
  2.7.14
5
* 3.6.4 (set by /Users/chunming.liu/.pyenv/version)
6
pyenv local 2.7.14

重要事情说三遍

不过有了pipenv,我们不用手动切换Python版本了,也就是安装完了pyenv之后不用再去安装具体的Python版本了。

1
注意:
2
add --enable-shared for pyenv python installations
3
https://github.com/pyenv/pyenv/wiki#how-to-build-cpython-with---enable-shared

2. 安装pyenv—用来安装相互独立的虚拟环境

2.1、安装pipenv
如果你是Mac电脑,那么推荐使用Homebrew来安装。

1
brew install pipenv

执行pipenv,可以查看pipenv的帮助信息。

2.2、为项目建立虚拟环境
默认地,虚拟环境会创建在~/.local/share/virtualenvs目录里面。
如果我们希望在每个项目的根目录下保存虚拟环境目录(.venv),需要在 .bashrc 或 .bash_profile 中配置如下:

1
export PIPENV_VENV_IN_PROJECT=1

要想使配置生效,执行下source ~/.bashrc或者source ~/.bash_profile。

接下来我们为项目创建虚拟环境。

1
mkdir pipenv_demo
2
cd pipenv_demo
3
4
pipenv --three # 初始化一个python3虚拟环境
5
pipenv --two # 初始化一个python3虚拟环境

创建完虚拟环境之后,在pipenv_demo目录下将会看到一个.venv的目录,这个目录就是pipenv_demo项目的虚拟环境。
使用具体的python版本创建虚拟环境,可以执行:

1
pipenv --python 2.7.14

2.3、为项目安装第三方依赖包
为项目安装自己的依赖包到虚拟环境中,使每个项目拥有相互独立的第三方包,是非常不错的Python的开发实践。安装依赖包到虚拟环境中:

1
pipenv install flask
2
pipenv install pytest --dev   # 用于区分需要部署到线上的开发包、只需要在测试环境中执行的包

执行完上面的命令后,检查一下是否安装成功:

1
$ pipenv graph
2
Flask==0.12.2
3
  - click [required: >=2.0, installed: 6.7]
4
  - itsdangerous [required: >=0.21, installed: 0.24]
5
  - Jinja2 [required: >=2.4, installed: 2.10]
6
    - MarkupSafe [required: >=0.23, installed: 1.0]
7
  - Werkzeug [required: >=0.7, installed: 0.14.1]
8
pytest==3.4.2
9
  - attrs [required: >=17.2.0, installed: 17.4.0]
10
  - pluggy [required: >=0.5,<0.7, installed: 0.6.0]
11
  - py [required: >=1.5.0, installed: 1.5.2]
12
  - setuptools [required: Any, installed: 38.6.0]
13
  - six [required: >=1.10.0, installed: 1.11.0]

2.4 更新 pypi源来提高依赖库安装的速度
在使用pipenv的时候,常常会在安装的时候,一直卡在了 Locking 这里,通过加上 -v 参数,可以看到安装过程中的步骤信息,卡在了下载那里,这时应该可以意识到是因为网络的原因,pipenv创建的 Pipfile 中默认的pypi源是python官方的 https://pypi.python.org/simple。我们国内用户访问下载的时候会很慢。

所以,我一般会在创建好Pipfile以后,修改到文件中 source 块下的 url 字段,设置为国内的 pypi 源就好了,我推荐的是清华的pypi源或者阿里源,具体设置如下:

1
[[source]]
2
 url = "https://pypi.tuna.tsinghua.edu.cn/simple"
3
 verify_ssl = true
4
 name = "pypi"

3、使用虚拟环境进行开发
虚拟环境创建好了之后,就可以在里面进行开发了。
如果在命令行下开发,则在项目目录下执行pipenv shell,就进入到了虚拟环境中,在这个环境中,就已经包含安装过的所有第三方依赖包了,接下来就可以利用这些第三方包进行开发工作了。
如果是用Pycharm进行开发,就更简单了,直接用Pycharm打开项目目录就好了,打开后可以从Pycharm中的左侧导航栏里面看到External Libraries里面显示的是虚拟环境中的Python解释器。

4、删除安装的第三方包
如果是要删除虚拟环境中的第三方包,执行

1
pipenv uninstall flask

5、安装项目所有的依赖
用git管理项目时候,要把Pipfile和Pipfile.lock加入版本跟踪。这样clone了这个项目的同学,只需要执行

1
pipenv install

就可以安装所有的Pipfile中 [packages]部分的包了,并且自动为项目在自己电脑上创建了虚拟环境。
如果是想要安装[dev-packages]部分的包,需要执行:

1
pipenv install -d

上面的方法都是安装Pipfile中列出来的第三方包的最新版本,如果是想安装Pipfile.lock中固定版本的第三方依赖包,需要执行:

1
pipenv install --ignore-pipfile

如果你的项目之前使用requirements.txt来管理依赖的,那么使用pipenv安装所有依赖可以采用类似pip的方法:

1
pipenv install -r path/to/requirements.txt

6、团队实践建议

建议团队内开发人员,在自己电脑上都安装pyenv和pipenv。Pipfile和Pipfile.lock加入版本跟踪,.venv不要加入版本管理。为自己的每一个项目建立独立的虚拟环境。

7、扩展命令(了解下就好)

  • 查看虚拟环境python解释器所在位置
1
pipenv --py
  • 查看虚拟环境所在位置
1
pipenv --venv
  • 使用更底层的命令pip freeze
1
pipenv run pip freeze
  • 只在安装开发阶段使用的软件包(和npm类似)
1
pipenv install pytest --dev
  • 安装Pipfile.lock的所有包(完整移植开发环境)
1
pipenv sync

参考链接:https://blog.csdn.net/liuchunming033/article/details/79582617
https://blog.windrunner.me/python/pip.html#pip-%E4%B8%8E-pipfile

antd 定制样式

准备

less版本:

1
"less": "2.7.2", less:3.0有bug

要编译的文件:

1
// theme.less
2
3
// 由于antd内部使用了utf8编码的文字符号而不是使用\u****的Unicode码点表示
4
// 在cdn样式文件返回头里没有明确指明utf-8时,可能存在文字符号乱码的可能
5
// 编译生成过程中通过css-loader也会自动转换,而本文场景是直接编译
6
// 所以,为了安全起见,最好指定编码格式
7
@charset "utf-8";
8
9
@import "../node_modules/antd/dist/antd.less";
10
11
// 覆盖变量定义
12
// 所有变量详见 https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less
13
14
@primary-color: #F15B41;

编译命令:

1
n// theme.less
2
3
// 由于antd内部使用了utf8编码的文字符号而不是使用\u****的Unicode码点表示
4
// 在cdn样式文件返回头里没有明确指明utf-8时,可能存在文字符号乱码的可能
5
// 编译生成过程中通过css-loader也会自动转换,而本文场景是直接编译
6
// 所以,为了安全起见,最好指定编码格式
7
@charset "utf-8";
8
9
@import "../node_modules/antd/dist/antd.less";
10
11
// 覆盖变量定义
12
// 所有变量详见 https://github.com/ant-design/ant-design/blob/master/components/style/themes/default.less
13
14
@primary-color: #F15B41;

参考:

web局部(antd)主题方案演进

Mac上传文件到Linux服务器

连接

  1. 打开终端,Shell => 新建远程连接

  2. 选择安全文件传输,输入连接主机IP

  3. 输入yes,然后输入主机密码,按回车结束

  4. 连接成功,上传文件

  5. put 本地文件路径 远程主机路径
    
    1
    2
    3
    4
    ### 相关Linux命令
    5
    6
    linux主机下查看文件
    linux主机下查看文件 ls -l

例子:将目录A重命名为B
mv A B

压缩文件
zip all.zip *.jpg

解压缩文件
unzip all.zip



MongoDB笔记

环境搭建

安装

  1. 使用homebrew安装

    1
    brew update
    2
    brew install mongodb
  2. 在当前目录下建立data/db文件夹,并设置权限可读可写

####启动

/usr/local/Cellar/mongodb/3.4.6/bin

  1. 在mongodb路径(/usr/local/Cellar/mongodb/3.4.6/bin)下面,sudo mongod
  2. 配置了path路径的话,直接 sudo mongod

配置path路径

1
如果你不想每次启动mongodb都要切换到/usr/local/Cellar/mongodb/3.4.6/bin目录下,你可以将它添加到环境变量,操作如下:
2
echo 'export PATH=/usr/local/Cellar/mongodb/3.4.6/bin:$PATH'>>~/.bash_profile
3
添加完成后为使环境变量生效,可重启shell终端,或输入命令
4
5
source .bash_profile。
6
查看环境变量是否添加成功:
7
echo $PATH

参考文档:

1
https://www.jianshu.com/p/c53a48cdba7f

###基本使用

  1. 通过命令行进行mongoDB数据库操作
1
./mongo 或 mongo

展示数据库:show dbs
切换数据库:use 数据库名 例如:use user
展示表:show collections
展示整张表的信息:db.表名.find() 例如:db.user.find()
更新指定记录的指定值:使用$set,否则所有该字段都会被更新。
db.user.update({“name”:”xxx”},{$set:{“name”:”yyy”}})
删除记录:
db.user.remove({“name”:”xxx”})
插入数据:
db.users.insert({“name”:”James”}})

chrome浏览器相关

设置

  1. mac上设置新版chrome浏览器跨域

    1
    open -n /Applications/Google\ Chrome.app/ --args --disable-web-security  --user-data-dir=/Users/yourname/MyChromeDevUserData/
  1. 当访问URL地址的时候会出现301重定向的时候,清理掉浏览器的缓存可以解决问题。(重要重要重要)

Webpack4.0 笔记

Webpack 相关

  1. 模块打包工具

    1
    ES Module 模块引入方式
    2
    CommonJS 模块引入方式(node的引入规范)
    3
    CMD
    4
    ADM
    5
    !!!千万不能全局安装webpack, 全局安装了某个版本的,如4.0,那其他用3.0的版本的就没法用了。
  2. 快速初始化npm项目

    1
    npm init -yes
  3. 查看npm包的信息

    1
    npm info '安装包的名字'  例如: npm info webpack
  4. npx用来查看当前项目的node_module安装包的的命令

    1
    npx webpack -v  
    2
    3
    安装指定版本的npm包
    4
    webpack-cli@3.3.0
    5
    6
    webpack打包默认是使用webpack.config.js文件;
    7
    如果需要指定其他的问配置文件:npx webpack --config webapckconfig.js(配置文件名)

Webpack 的核心概念

Webpack 的高级概念

Webpack 配置

Webpack 底层原理及脚手架工具

Create-React-App 和 Vue-Cli 3.0脚手架工具配置

hexo常用命令笔记

hexo常用命令笔记

  1. 安装
1
npm install hexo -g #安装  
2
npm update hexo -g #升级  
3
hexo init #初始化
  1. 简写

hexo n "我的博客" == hexo new "我的博客" #新建文章
hexo p == hexo publish
hexo g == hexo generate#生成
hexo s == hexo server #启动服务预览
hexo d == hexo deploy#部署

  1. 服务器

hexo server #Hexo 会监视文件变动并自动更新,您无须重启服务器。
hexo server -s #静态模式
hexo server -p 5000 #更改端口
hexo server -i 192.168.1.1 #自定义 IP

hexo clean #清除缓存 网页正常情况下可以忽略此条命令
hexo g #生成静态网页
hexo d #开始部署

参考链接:https://segmentfault.com/a/1190000002632530

链接

UI布局链接

CSS 常见布局方式:

1
https://juejin.im/post/599970f4518825243a78b9d5

优秀的博客

Cherry’s Blog:

1
https://cherryblog.site/

hexo常用命令笔记

1
https://segmentfault.com/a/1190000002632530

thinkphp5

快速开始

1
### thinkphp环境搭建
2
​``` bash
3
1. 安装XAMPP
4
2. 启动,检查端口是否被占用,被占用的话结束其他应用
5
 netstat -ano   //Windows环境下查看端口
6
3. /mysql/bin/目录下    mysql -uroot -p  //查看mysql是否安装成功 php目录,php -v 查看是PHP是否成功。
7
4. [ 下载应用项目](https://github.com/top-think/think.git)
8
5. [ 下载核心类库](https://github.com/top-think/framework.git)
9
6. 上面两个文件解压,拷贝到XAMPP根目录下的htdocs,应用项目重命名zerg,核心类重命名thinkphp,把thinkphp剪切到zerg.
10
7. 浏览器http://localhost/zerg/public/ 显示成功界面,环境搭建成功。
11
12
安装Xdebug,打开php.ini配置文件,在最下面加入最后一行。
13
[Xdebug]
14
zend_extension = C:\server\xampp\php\php_xdebug-2.5.4-5.6-vc11.dll
15
xdebug.remote_enable=1
16
xdebug.remote_port=9000
17
xdebug.remote_host= localhost
18
xdebug.idekey = PHPSTORM
19
xdebug.profiler_enable=1
20
xdebug.profiler_output_dir=" C:\server\xampp\php\xdebug_log"
1
配置虚拟主机
2
C:\server\xampp\apache\conf\extra
3
<VirtualHost *:80>
4
    DocumentRoot "C:\server\xampp\htdocs"
5
	ServerName localhost
6
</VirtualHost>
7
8
<VirtualHost *:80>
9
    DocumentRoot "C:\server\xampp\htdocs\zerg\public"
10
	ServerName z.com
11
</VirtualHost>
12
更改host文件
13
C:\Windows\System32\drivers\etc
14
# localhost name resolution is handled within DNS itself.
15
#	127.0.0.1       localhost
16
	127.0.0.1       z.com
17
###路由模块
18
19
//Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
20
//Route::rule('hello','sample/Test/hello','GET',['https'=>true ]);
21
//Route::get('hello','sample/Test/hello');
22
1. 特别注意,方法一旦注册路由,原来的path路径方法自动失效。!!!!!!!!!!!!
23
24
### 传递参数
25
路由里面传递参数:使用“:参数名称”   ?name="zhangshan"&age=18
26
Route::post('hello/:id','sample/Test/hello');
27
### 获取参数
28
1. 方式一:
29
    public function hello($id, $name,$age){
30
       echo $id;
31
        echo '|';
32
       echo $name;
33
        echo '|';
34
        echo $age;
35
        return "hello qiniujljljlj";
36
   }
37
2. 方式二:
38
首先,导入包;
39
use think\Request;
40
param跟请求方式无关,都能获取到
41
    public function hello(){
42
        $id = Request::instance()->param('id');
43
        $name = Request::instance()->param('name');
44
        $age = Request::instance()->param('age');
45
        echo $id;
46
        echo '|';
47
        echo $name;
48
        echo '|';
49
        echo $age;
50
51
    }
52
53
获取所有参数一:
54
    public function hello(){
55
        $all = Request::instance()->param();
56
		//$all = Request::instance()->get(); 获取get传参数
57
		//$all = Request::instance()->post(); 获取post传参
58
		//$all = Request::instance()->route(); 获取路由传参
59
		var_dump($all);
60
    }
61
62
获取所有参数二(通过input助手函数)
63
    public function hello(){
64
        $all = input('param.');
65
        var_dump($all);
66
67
    }
68
获取所有参数三(通过依赖注入的方法)
69
    public function hello(Request $request){
70
        $all = $request->param('');
71
        var_dump($all);
72
    }
73
74
### 验证方式
75
 $data = [
76
//            'name' => 'vendor',
77
//            'email' => 'vendor@qq.com',
78
//            'id' => $id
79
//        ];
80
        //独立验证方式
81
//        $validate = new Validate([
82
//            'name' => 'require|max:10',
83
//            'email' => 'email'
84
//        ]);
85
86
        // 验证器方式(封装性更好些,推荐使用)
87
//        $validate = new IDMustBePostiveInt();
88
89
//        $result = $validate->batch()->check($data);
90
//        echo  $validate->getError();
91
//        if($result){
92
//
93
//        } else {
94
//            return 'id必须是正整数1111';
95
//        }