30 May 18
# 图片太多,详细见link 以及文本
一、每日面试(知识复习)
1、问:执行完下面的代码后, l,m的内容分别是什么?
def func(m):
for k,v in m.items():
m[k+2] = v+2
m = {1: 2, 3: 4}
l = m # 浅拷贝
l[9] = 10
func(l)
m[7] = 8
print("l:", l)
print("m:", m)
# 报错:dictionary changed size during iteration
# (python3.6)在迭代一个列表或字典的时候,你不能修改列表或字典的大小
2、= 、 切片 、copy 、deepcopy
import copy
list1 = [11, 22, [33, 44]]
list2 = list1
list3 = list1[:]
list4 = copy.copy(list1)
list5 = copy.deepcopy(list1)
list1[2].append(55)
print("list2:",list2) # [11, 22, [33, 44, 55]]
print("list3:",list3) # [11, 22, [33, 44, 55]]
print("list4:",list4) # [11, 22, [33, 44, 55]]
print("list5:",list5) # [11, 22, [33, 44]]
print(id(list1)) # 4363819976
print(id(list2)) # 4363819976
print(id(list3)) # 4363820104
print(id(list4)) # 4363820040
print(id(list5)) # 4363834760
# 前几种是拷贝了一个连接地址,原列表改变后,这几种列表中的值根据连接取值,相应都作出变化。后一种(深拷贝)是开始就自建了一个空间,原列表中的值改变,其不跟着变化。
3、注释(规范化)
1、# TODO:在传git前会提示(这里没有考虑到)
2、行内注释balabala # balabala
3、单行注释# balabala
4、多行注释''' '''
5、函数、类内部注释
def foo(name, age):
"""
这个函数是干什么用的?
:param name: 用户名,必须是字符串类型
:param age:
:return: None
"""
print(name)
print(age)
4、join连接列表的元素(只能连接字符串)
list_tmp = [11, 22, 33, 44]
list_tmp2 = ["Alex", "DSB", "hehe", "haha"]
ret1= "".join(list_tmp2)
ret2= ",".join([str(i) for i in list_tmp])
print(ret1) # AlexDSBhehehaha
print(ret2) # 11,22,33,44
5、python中的三元表达式(三元运算)
# 如果n > m,我就把n的值赋值给x,否则就把m的值赋值给x
n = 10
m = 5
x = n if n > m else m
print(x) # 10
二、今日内容
Blog链接:https://www.cnblogs.com/liwenzhou/p/8004649.html
1. JavaScript是什么?
一门轻量级的编程语言;运行在浏览器上的脚本语言。
node.js 可以写后端。
2. JavaScript都学哪些内容?
1. 语法基础
2. BOM(document object model文档对象模型)--> 用JS代码操作浏览器
3. DOM (browser object model浏览器对象模型)--> 用JS代码操作HTML文档
3. JavaScript的运行方式?
1. 导入方式:
1. 在HTML文件中写一个script标签,在script标签中直接写JS代码
2. 将JS代码写在一个单独的JS文件中,然后通过script标签的src属性导入
2. 可以直接在浏览器的console窗口直接运行JS代码
3. node.js 运行JS文件 *(现在了解即可)
4. JavaScript学什么?
0. 语法规则
1. 单行注释 //
2. 多行注释 /* 多行注释*/
3. 结束符 ;
1. 变量
1. 变量名:可以使用_,数字,字母,$组成,不能以数字开头
1. 变量名是区分大小写的。
2. 推荐使用驼峰式命名规则。
3. 保留字不能用做变量名。
2. 声明变量
1. var
2. let(ES6新增):所声明的变量只在let命令所在的代码块内有效。
例如:for循环的计数器就很适合使用let命令。
3. const(ES6新增):用来声明常量。一旦声明,其值就不能改变。
2. 数据类型
1. 字符串
字符串的常用属性和方法
# substring不支持负数,slice支持负数,一般用slice切片
Substring(0,-2) -> substring(-2,0)->substring(0,0)->’’
# shift + enter 换行
· ·(反引号)在ES6中不报错; 若·· ·报错,按上述设置成ES6 或在js文件开头加一行:
/* jshint esversion: 6 */
ES6中引入了模板字符串。模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
2. 数值
1. JS中不区分整型和浮点型,都叫数值类型
2. NaN表示一个值不是数值(是数值类型,但表示不是一个数字not a number;当字符串转成数字时,可能会出现NaN)
3. 将字符串类型的数据转换成数值
parseInt("100")
parseFloat("11.11")
3. 布尔值(""(空字符串)、0、null、undefined、NaN都是false)
true false
4. Null
手动将变量的值清空的时候name=null
5. Undefined
变量光声明但是没有赋值的时候; 函数无明确返回值时
6. Object(JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象)对象时带有属性和方法的特殊数据类型
1. 数组
TODO: sort()排序 (详情见明日课程)
2. 数组的内置属性和方法
# sort将数组中的元算转成字符串,然后一位一位的对比排序
Console.log() 相当于print()
判断一个变量的类型:
typeofnull --> object
typeof [11,22] --> Object
typeof undefined --> undefined
# typeof是一个一元运算符(就像++,--,!,- 等一元运算符),不是一个函数,也不是一个语句。
3. 运算符
1. 算术运算符
% 取余
2. 逻辑运算符
3. 比较运算符
1. 弱等于 "5" == 5 --> true
2. 强等于 "5" === 5 --> false
4. 赋值运算符
4. 控制语句
1. if ... else ...
2. if ... else if ... else ...
3. switch () {
case 1:
...
break;
}
# switch主要用于一个变量一个值的比较情况下
#一定要加break,否则程序会继续执行后续case中的语句
4. for
5. while
6. 三元运算
5. 函数
1. 函数的定义
1. 普通函数
2. 带参数的函数
3. 带返回值的函数
# 如果return后跟多个值,返回最后一个
4. 匿名函数
5. 自执行函数(立刻执行函数)
6. 箭头函数
# 如果箭头函数不需要参数,或需要多个参数,用()代表参数部分
2. JS函数的坑
1. 默认的返回值是undefined
2. 调用函数时传参随意
3. 只能有一个返回值
3、 函数内置的arguments对象
4、练习题