0%

基础

  • 输出:print()

  • 输入:input(),可以让用户输入字符串,并赋值,如:name = input(),提示符可以作为参数

  • 注释:#

  • 代码块:语句以:结尾时,缩进的语句视为代码块,4个空格的缩进

    a = 100
    if a >= 0:
        print(a)
    else:
        print(-a)
  • 数据类型:

    • 整型

    • 浮点数

    • 字符串:单引号或双引号声明字符串,r''表示''中的字符串不转义,'''...'''表示多行内容,其中...在交互命令行中使用

      • strip():去除字符串首尾的空格
    • 布尔值:False, True。布尔运算:not, and, or

    • 空值:None

    • 变量:直接使用变量名(python是动态语言)

    • 列表:

      • list(有序集合),类似于数组。使用len()获得list元素的个数,使用-1取到最后一个元素,使用负数可以从后获取元素。
        • append(value):追加元素到末尾
        • insert(index, value):把元素插入到指定的位置
        • pop():删除末尾的元素,list.pop(index)删除指定位置的元素
        • len():获取元素个数len(list)
        • +:两个list拼接
      • tuple(元组),类似数组,但是一旦初始化就不能修改
      # list定义
      >>> classmates = ['Michael', 'Bob', 'Tracy']
      # tuple定义
      >>> t = (1, 2)
      >>> t = ()
      >>> t = (1,) # 只有1个元素的tuple定义时必须加一个逗号,消除()运算符的歧义
      # 指针指向
      >>> t = ('a', 'b', ['A', 'B'])
      >>> t[2][0] = 'X'
      >>> t[2][1] = 'Y'
      >>> t
      ('a', 'b', ['X', 'Y'])
    • 字典:

      • dict,类似map,使用键-值(key-value)存储
        • in,判断dict中是否存在key
        • get(key[,returnValue]),判断dict中是否存在key,可以指定不存在时的返回值
        • pop(key),删除key值
      • set,类似无序集合,不储存value值,无重复key值
        • add(key):添加元素到set中,可以重复添加,但是没有效果
        • remove(key):删除元素
      # dict定义
      >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
      # set定义
      >>> s = set([1, 2, 3])
      • 与list区别:
        • dict:查找和插入的速度极快,不会随着key的增加而变慢;需要占用大量的内存,内存浪费多。
        • list:查找和插入的时间随着元素的增加而增加;占用空间小,浪费内存很少。
  • 运算:+-*/( 除法结果是浮点数),//(地板除,两个整数相除仍然是整数,除不尽的保留整数部分),%(取余)

  • 编码:ord()获取字符的整数编码,chr()把编码转换为对应的字符,把string变为一字节为单位的bytesbytes类型的数据用带b前缀的单引号或双引号表示,bytes的每个字符都只占用一个字节,以Unicode表示的str通过encode()方法可以编码为指定的bytes。纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

    bytes中,无法显示为ASCII字符的字节,用\x##显示。

    从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法,如果bytes中包含无法解码的字节,decode()方法会报错。

    如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节。

    >>> '中文'.encode('utf-8')
    b'\xe4\xb8\xad\xe6\x96\x87'
    >>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
    '中'

    要计算str包含多少个字符,可以用len()函数,如果换成byteslen()函数就计算字节数。

    文件开头要写如下语句,第一句告诉Linux/OS X系统,这是一个Python可执行程序,第二句Python解释器,按照UTF-8编码读取源代码。文本编辑器里要设置UTF-8 without BOM编码。

    #!/usr/bin/env python3 
    # -*- coding: utf-8 -*-
  • 格式化:

    • %。在字符串内部,%s表示用字符串替换,%d表示用整数替换,%f表示用浮点数替换,%x表示用十六进制整数替换,转义也使用%,如%%转义为%
    >>> 'Hello, %s' % 'world'
    'Hello, world'
    >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
    'Hi, Michael, you have $1000000.'
    • format()替换占位符{0}{1}
    >>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
    'Hello, 小明, 成绩提升了 17.1%'
  • 条件判断: ifelif(else if缩写)else(注意冒号缩进)

  • 循环:

    • for...in循环list
    • while循环
    • break退出当前循环
    • continue跳出当前循环进行下一次循环
    • 注意不要滥用breakcontinue,分叉过多易出错

作用域

当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。

在if-elif-else、for-else、while、try-except\try-finally等关键字的语句块中并不会产成作用域。

阅读全文 »

6月让上线一款快应用,一边产品经理想让我开发另一款小程序,一边boss想快速上线快应用,预计的开发时间未三周,实际用了一个月多,其中有两周踩坑融云IM系统,初始一周老大想让我修改融云的SDK兼容快应用,奈何能力有限几千行的代码看着真心头疼,道行不够深。最后用了H5的方式兼容融云,但是结果差强人意,快应用框架对H5页面的渲染根据手机平台和手机引擎有关,其中小米支持最好,华为可以单独上架。

反思

因为拖了一周左右的时间,所以反思一下,下次避免再发生(虽然开发拖进度是非常平常的事情)。

  • 看prd不细心,主要是prd和UI图不全,找了好几次UI补全UI图,prd缺少很多流程的截图,导致于少写了很多逻辑判断。
  • 没有合理规划项目周期,对整个项目还不是很了解的情况下就开始做了,应当梳理好逻辑、流程,合理框架设计之后再开始。
  • 总是忽略很多细节,反而很多细节花的时间多,总是觉得能实现,但是总是没有往深处想,没有模拟出整个操作流程。
  • 总是想复杂,应当梳理清楚进入页面的入口。

快应用API填坑

阅读全文 »

4月末开发了一款提问小程序,因为第一次使用wepy,所以遇到很多的坑,同时开发小程序时有些功能第一次使用,记录一下

微信小程序API填坑

上传图片(七牛云上传)

微信上传图片到七牛云多张需要循环上传
七牛云上传前需要获取到七牛云token,获取到token之后保存到全局变量中。

上传图片时有延时,注意设置截取图片数组,以及每次打开上传图片时可同时上传图片的张数需要根据已上传的图片张数动态改变

阅读全文 »

一、区别

1. 开发前准备

微信小程序 快应用
开发账号准备 (发布前非必需)
微信公众平台注册申请微信小程序账号
(发布前非必需)
快应用官网注册,
需要绑定厂商开发者账号(至少一家)
开发环境 PC端:需要下载微信小程序IDE,进行预览小程序
手机端:需要下载微信APP
PC端:需要安装10.0+版本的nodejs、hap-toolkit,快应用开发IDE(非必需)
手机端:需要下载快应用调试器APK,多个快应用需要下载快应用预览版
开发语言 wxml、wxss、js脚本、wxs
html、css、js脚本
开发规范与vue相近
调试预览 微信小程序IDE中进行预览和调试 快应用开发IDE中进行预览和调试
或在其他IDE中开发完成通过命令行进行编译后使用浏览器打开生成的预览地址,通过浏览器开发者模式进行调试
或使用手机连接USB进行预览

补充

快应用账号申请流程图

阅读全文 »

NODE安装与配置

windows版本

  1. nodejs官网中下载稳定版本的nodejshttps://nodejs.org/en/download/

  2. 安装完成后,在高级系统配置中配置NODE_PATH=“D:\software\nodejs”

  3. 检测是否安装成功,在命令行中输入node -vnpm -vnode安装成功后会自动安装npm

  4. 配置全局modules安装地址,查看当前npm配置信息npm config ls
    设置cache路径npm config set cache "D:\software\nodejs\node_cache"
    设置prefix路径安装全局modules时保存的地址npm config set prefix "D:\software\nodejs"会自动寻找nodejs安装目录下的文件

  5. 测试全局安装 npm install express -g 查看是否安装成功

  6. 安装cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org

  7. cnpm安装完成后,查看是否安装成功cnpm -v

Linux 版本

参考链接:node-项目部署

阅读全文 »

Linux 命令

查找文件

查找文件名:find [path] -name fileName

Manjaro

配置源

阅读全文 »

百度智能小程序真机调试

1.连接USB,打开开发者模式,USB调试功能

2.开启了USB调试也无法找到设备
两种解决方法:
(1) 在电脑中安装 Android Debug Bridge(安卓调试桥) 后再尝试连接;在命令行中运行adb devices查找连接的设备
(2) 执行如下命令,使用npm全局安装adb-devtools,并在终端执行devtools,在手机上点击确认授权后再次尝试;

`npm install adb-devtools -gdevtools`

参考链接:

阅读全文 »