Python菜鸟教程学习笔记 - 数据类型

一、标准数据类型

Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

二、数字

Python支持四种不同的数字类型:

  • int(有符号整型)
  • long(长整型[也可以代表八进制和十六进制])
  • float(浮点型)
  • complex(复数)

长整型定义在数值后添加一个小写或者大写的”L”,python中没有double类型数字。

使用完一个对象后,可通过del关键字删除对象引用。语法:
del var1[,var2[,var3[….,varN]]]]

1
2
3
value = 25
string = "yes"
del value, string

如若在删除对象引用还继续使用对象的话,则会报变量未定义的错误:NameError: name 'value' is not defined

Python菜鸟教程学习笔记 - 基础语法

一、第一个Python程序

1. 交互式编程

在mac或者linux终端输入python命令即可进入交互式编程。如:

1
2
3
4
5
yerba-buena:pystudy yeshaoting$ python
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

2. 脚本式编程

将python代码写入一个以.py为扩展名的python文件,如:test.py。
脚本写完后,可以通过如下二种方式执行python脚本:python test.py。

若python文件里设置了python shebang,则可以通过./test.py来执行。

二、python标识符

在python里,标识符有字母、数字、下划线组成。所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

python中的标识符是区分大小写的。

以下划线开头的标识符是有特殊意义的。
以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;
以双下划线开头的(__foo)代表类的私有成员;
以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。

三、Python保留字符

and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield

《跟老齐学Python》学习笔记-数

:所有示例基于python2。
:由于老齐的教程面向零基础,简单通俗适用于编程新手;其篇幅又过长,很不适合已经熟知其他编程语言的人员使用,后期打算换用其他的教程进行学习。

一、数和四则运算

1. 查看对象内存地址:id()

1
2
3
4
>>> id(8)
140200127779760
>>> id(23.56)
140200127787712

2. 查看对象类型:type()

1
2
3
4
5
6
7
8
>>> type(2)
<type 'int'>
>>> type(3.4)
<type 'float'>
>>> type(23333333333333333333)
<type 'long'>
>>> type('yeshaoting')
<type 'str'>

3. 对象有类型,变量无类型

python中变量仅仅只一个标识,指向某个存储空间。
程序执行赛程中其类型可以任意修改。
相对于java强类型言语而言,python是弱类型的。

1
2
3
>>> a=2; type(a); a=3.4; type(a);
<type 'int'>
<type 'float'>

4. 浮点数与整数运算结果是浮点数。

5. 运算溢出问题

整数间运算不会出现整数溢出问题,但是如果与浮点数一起计算就有可能出现溢出问题。

参见:https://github.com/yeshaoting/StarterLearningPython/blob/master/102.md

python打印中文异常

一、背景

脚本里需要打印中文内容。

二、脚本

1
2
3
4
5
6
7
8
'''
Created on Apr 27, 2016
@author: yeshaoting
'''
if __name__ == '__main__':
print '你好,python!'

三、问题

python脚本里包含有中文时,报如下错误:

1
2
3
4
5
6
7
Traceback (most recent call last):
File "/Applications/STS.app/Contents/Eclipse/plugins/org.python.pydev_4.5.5.201603221110/pysrc/pydevd.py", line 1529, in <module>
globals = debugger.run(setup['file'], None, None, is_module)
File "/Applications/STS.app/Contents/Eclipse/plugins/org.python.pydev_4.5.5.201603221110/pysrc/pydevd.py", line 936, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "/Users/yeshaoting/java/workspace/python-workspace/HelloPython/base/HelloWorld.py", line 8
SyntaxError: Non-ASCII character '\xe4' in file /Users/yeshaoting/java/workspace/python-workspace/HelloPython/base/HelloWorld.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Sublime Text 3序列号

分享Sublime Text 3序列号一枚:

1
2
3
4
5
6
7
8
9
10
11
12
13
—– BEGIN LICENSE —–
Andrew Weber
Single User License
EA7E-855605
813A03DD 5E4AD9E6 6C0EEB94 BC99798F
942194A6 02396E98 E62C9979 4BB979FE
91424C9D A45400BF F6747D88 2FB88078
90F5CC94 1CDC92DC 8457107A F151657B
1D22E383 A997F016 42397640 33F41CFC
E1D0AE85 A0BBD039 0E9C8D55 E1B89D5D
5CDB7036 E56DE1C0 EFCC0840 650CD3A6
B98FC99C 8FAC73EE D2B95564 DF450523
—— END LICENSE ——

jquery如何传输json数据

一、前言

本文阐述基于如下mock接口:
接口:http://openapi.tencentyun.com/v3/user/delete

参数 参数说明
appid 应用ID
appkey 应用密钥
userid 用户ID
operid 操作者ID

二、请求删除用户

1. 构造请求参数

1
2
3
4
5
6
var params = {
"appid": "2",
"appkey": "5F154D7D2751AEDC8527269006F290F70297B7E54667536C",
"userid": "B624064BA065E01CB73F835017FE96FA",
"operid": "B624064BA065E01CB73F835017FE96FA"
};

WEB安全渗透分享

WEB安全渗透靶场:http://10.4.236.115:8080/
是否开放所有关卡切换:http://10.4.236.115:8080/sohu/switchOpenStage

0x00 前言

此次分享内容旨在加深开发工作中的安全意识,也希望能起到抛砖引玉的作用,在分享完成后的讨论环节大家也说说自己现在或者曾经遇到过的安全问题。

为了让大家能参与其中,对WEB安全问题有个更具象的认识。周末二天基于 angularjsjqueryspringspring mvcmybatismysql 搭建一个比较粗糙的WEB安全靶场,复刻自参加的第一屇搜狐安全擂台赛,供大家hack。
如发现问题,请各位见谅哈。

1. 用户登记

主要是为了收集用户名信息,进行登记,用于记录闯关进度!

界面如下图所示:
用户登记

2. 用户主页

简单地展示用户当前进度,并提供进入下一关的入口。后续可以扩展,显示击败百分之多少的对手。

界面如下图所示:
用户主页

angularjs循环指定次数

一、js代码

1
2
3
$scope.range = function(n) {
return new Array(n);
};

通过new Array(n)创建指定大小容量的数组。

二、html代码

1
2
3
4
5
<div class="list-group-horizontal">
<a ng-repeat="i in range(6) track by $index">
<span ng-bind="$index + 1"></span>
</a>
</div>

遍历数组,并通过track by $index来指定数组索引为$index。

三、输出结果

输出结果为:1 2 3 4 5 6

四、参考文档

Way to ng-repeat defined number of times instead of repeating over array?

生成javadoc文档

一、查看javadoc帮助文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
yerba-buena:~ yeshaoting$ javadoc --help
javadoc: 错误 - 无效的标记: --help
用法: javadoc [options] [packagenames] [sourcefiles] [@files]
-overview <file> 从 HTML 文件读取概览文档
-public 仅显示 public 类和成员
-protected 显示 protected/public 类和成员 (默认值)
-package 显示 package/protected/public 类和成员
-private 显示所有类和成员
-help 显示命令行选项并退出
-doclet <class> 通过替代 doclet 生成输出
-docletpath <path> 指定查找 doclet 类文件的位置
-sourcepath <pathlist> 指定查找源文件的位置
-classpath <pathlist> 指定查找用户类文件的位置
-cp <pathlist> 指定查找用户类文件的位置
-exclude <pkglist> 指定要排除的程序包列表
-subpackages <subpkglist> 指定要递归加载的子程序包
-breakiterator 计算带有 BreakIterator 的第一个语句
-bootclasspath <pathlist> 覆盖由引导类加载器所加载的
类文件的位置
-source <release> 提供与指定发行版的源兼容性
-extdirs <dirlist> 覆盖所安装扩展的位置
-verbose 输出有关 Javadoc 正在执行的操作的信息
-locale <name> 要使用的区域设置, 例如 en_US 或 en_US_WIN
-encoding <name> 源文件编码名称
-quiet 不显示状态消息
-J<flag> 直接将 <flag> 传递到运行时系统
-X 输出非标准选项的提要
通过标准 doclet 提供:
-d <directory> 输出文件的目标目录
-use 创建类和程序包用法页面
-version 包含 @version 段
-author 包含 @author 段
-docfilessubdirs 递归复制文档文件子目录
-splitindex 将索引分为每个字母对应一个文件
-windowtitle <text> 文档的浏览器窗口标题
-doctitle <html-code> 包含概览页面的标题
-header <html-code> 包含每个页面的页眉文本
-footer <html-code> 包含每个页面的页脚文本
-top <html-code> 包含每个页面的顶部文本
-bottom <html-code> 包含每个页面的底部文本
-link <url> 创建指向位于 <url> 的 javadoc 输出的链接
-linkoffline <url> <url2> 利用位于 <url2> 的程序包列表链接至位于 <url> 的文档
-excludedocfilessubdir <name1>:.. 排除具有给定名称的所有文档文件子目录。
-group <name> <p1>:<p2>.. 在概览页面中, 将指定的程序包分组
-nocomment 不生成说明和标记, 只生成声明。
-nodeprecated 不包含 @deprecated 信息
-noqualifier <name1>:<name2>:... 输出中不包括指定限定符的列表。
-nosince 不包含 @since 信息
-notimestamp 不包含隐藏时间戳
-nodeprecatedlist 不生成已过时的列表
-notree 不生成类分层结构
-noindex 不生成索引
-nohelp 不生成帮助链接
-nonavbar 不生成导航栏
-serialwarn 生成有关 @serial 标记的警告
-tag <name>:<locations>:<header> 指定单个参数定制标记
-taglet 要注册的 Taglet 的全限定名称
-tagletpath Taglet 的路径
-charset <charset> 用于跨平台查看生成的文档的字符集。
-helpfile <file> 包含帮助链接所链接到的文件
-linksource 以 HTML 格式生成源文件
-sourcetab <tab length> 指定源中每个制表符占据的空格数
-keywords 使程序包, 类和成员信息附带 HTML 元标记
-stylesheetfile <path> 用于更改生成文档的样式的文件
-docencoding <name> 指定输出的字符编码

angularjs视图跳转不刷新问题

在实际工作过程中,发现通过 $state.go("stage2") 让视图跳转到stage2,但视图内容并不刷新。

一、问题解决

1. 方法一

通过修改地址栏内容,模板一次用户通过地址栏输入地址操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//be sure to inject $scope and $location
var changeLocation = function(url, forceReload) {
$scope = $scope || angular.element(document).scope();
if(forceReload || $scope.$$phase) {
window.location = url;
}
else {
//only use this if you want to replace the history stack
//$location.path(url).replace();
//this this if you want to change the URL and add it to the history stack
$location.path(url);
$scope.$apply();
}
};

2. 方法二

通过自带的参数reload,要求视图跳转时强制刷新视图内容。

1
$state.go("stage2", {}, {"reload": true});

或者视图跳转完后,通过reloa()方法刷新视图。

1
2
$state.go("stage2");
$state.reload("stage2");

二、参考文档

|