P#02 Python函数的参数详解

python的参数主要分为四类

  • 位置参数
  • 默认参数
  • 关键字参数
  • 可变参数

# 1 — 位置参数

位置参数就是普通的参数

形参与实参根据位置一一对应。

 

# 2 — 默认参数

在定义函数过程中,给形参赋予默认值。

默认参数最好定义在位置参数后面

(原因:因为参数是从左到右匹配,如果默认参数排在位置参数前,在调用函数时如果赋予的实参少于形参,最后的位置参数就没有被赋值导致出错。  当然,在调用函数时如果赋予的实参 等于 形参,并根据参数一一对应,就不会出错)

 

# 3 — 关键字参数

区别于位置参数。

位置参数     — 是根据形参的位置顺序来确定形参与实参的对应关系。

关键字参数  — 是根据参数变量名的匹配来确定形参与实参的对应关系,

 

# 4 — 可变参数(收集参数)

当定义的形参比传进来的实参要少,也是可以接收全部的实参的,就是使用一定的结构来接收这些参数。例如:tuple、dict

可变参数有两种类型:

  •  一个 * 的,采用元组 tuple 保存
  • 两个 ** 的,采用字典 dict 保存

可变参数例子:类型一

 

可变参数例子:类型二

 


– 注意:问题 —- 当 list 或 dict 等作为实参,传入到可变参数时…

拿一个 list 实参作为例子。当传入一个list,形参 *args 去接收该 list 时,因为 *args本身就是一个tuple,所以实参 list 被嵌入到tuple中,就是说整个list就是一个参数,而非里面的数据传入形参。

要想 list 里面的值作为参数传入*args,需要使用解包符号 * (在调用函数传参时使用)

解决方法:解包

more

Window10环境下安装MySQL

环境:Windows10     64bit

    MySQL5.7.21   zip

 

# 1 — 下载

方式一  百度网盘   密码:链接:lhq3

方式二  清华镜像  (推荐)

方式三  官网  (本人亲测0-0  好慢  除非你非要在官网下,不然我推荐使用清华镜像)

步骤:点击官网的 DOWNLOADS 打开下载页面

  

拉到网页下面,选择 Community(GPL)Downloads

   

选择 MySQL Community Server

拉到网页下面

如果想下载历史版本–在刚刚的页面(本人下载的就是5.7.21版本的)

选择 MySQL Community Server

 

# 2 — 安装

把下载的zip文件解压到指定的文件夹里面(我的是E:\MySQL\)

— 1 创建配置文件 my.ini

先添加MySQL的配置文件my.ini(看了网站的一些教程说在MySQL5.7默认没有这个,反正我下的就没有)

首先在和 bin 相同的路径下新建一个 txt 文件

然后在txt添加以下配置内容(在菜鸟教程上有)

最后保存另存为 my.ini

搞定 my.ini 文件后,以管理员身份用cmd打开运行(一定要用管理员身份,不然后面会出错,亲测)

— 2 用 cd 命令切换到刚才的 bin 目录下

mysqld  install

不用管理员身份运行会出现以下错误

初始化 data 目录(就是刚才配置文件 my.ini 里面的 datadir 的路径)

mysqld  –initialize-insecure

初始化完成后启动mysql

net  start  mysql

 

这是关闭mysql的命令

net  stop  mysql

— 3 测试

首先登陆到MySQL中(用户名:root     密码:初始为空)

mysql  -u  root  -p

 

(进入之后,现在你就可以创建你的数据库了)

显示现有的数据库

命令:show  databases;

 

退出数据库

命令:exit

 

more

(801) 880-0116

字符串的格式化:就是把字符串按照一定的格式打印出来或对字符串进行填充等

字符串的格式化主要有两个方法:%符号 和 format函数

 

1. 利用 % 符号

首先是一个简单的例子:

/** 原理:先在需要格式化的位置插上 “%和类型”。然后调用时,在后面用 %符号来连接相同类型的对象或对象的引用。如果有多个位置需要格式化,就按顺序用%来连接(例如上图的第三个例子)

/** 格式:%[(name)][flags][width].[precision]typecode (这个格式太难记了,用到再查吧,下面就简单了解一下)

在 [ ] 里面的都是可选部分(了解一下就行)

  • (name)   用于选择指定的key
  • flags   右对齐:正数的加 +,负数的加 –

  左对齐:正数前没有 -,负数前加 –

  • width   占有宽度
  • .precision   小数点后保留的位数
  • typecode   可格式化对象的类型(必选项)

s : 格式化一个对象为字符串

d : 格式化一个对象为十进制数

r : 格式化一个整数为其unicode对应的值

o : 格式化一个整数为八进制

x : 格式化一个整数为十六进制

……还用很多,在(949) 475-8366上有详细的讲解

(注意:如果不在需要格式化的字符串后面添连接 “%和对象”,字符串里面的 “%和类型” 会当作字符串输出)

(个人感觉这个跟C语言比较相似)

 

2. 利用 format() 函数(个人感觉这个好用)

采用format()函数进行格式化主要用到 { } 和 .

首先是一个简单的例子:

/** 原理:在需要格式化的位置用 {} 代替要插入的对象;在字符串格式化输出时,字符串对象的引用调用format()函数,并插入参数,插入的参数就是格式化的对象。

(注意:{} 里面的数字代表 format函数对应位置的参数)

 

/** 玩一下 **/

组合上面两种: % 和 format函数

采用两种方式组合输出

1. 先用 % ,再调用 format 函数:输出为 

2. 先调用 format 函数,再用 % :输出为 

可以看到输出方式 1 并不能正常输出。至于原因嘛……待续。

more

W#00 Web安全-我的入坑路(努力坚持下去)

  1. 首先肯定要熟悉Web通信的基础了,HTTP
  2. 还有Web的基础知识了、HTML、脚本语言、Linux、数据库sql
  3. Web安全基础,漏洞分析(SQL注入、xss、文件上传、CSRF…)主要是OWASP TOP10
  4. 当然,NB的工具必不可少,sqlmap、BurpSuite、Nmap、Nessus、Hydra…
  5. 重点中的重点,Web安全攻防知识
  6. 可以刷靶机了Webug、DVWA…(上网找找就有)

正在努力中……

more