diff --git "a/Flutter/Dart-\345\237\272\347\241\200.md" "b/Flutter/Dart-\345\237\272\347\241\200.md" index 7fb971e..537a5cf 100644 --- "a/Flutter/Dart-\345\237\272\347\241\200.md" +++ "b/Flutter/Dart-\345\237\272\347\241\200.md" @@ -1,4 +1,4 @@ -## Dart基础知识 +# Dart基础知识 ### Dart @@ -18,7 +18,7 @@ (2)、注意:标识符开头不能是数字 (3)、标识符不能是保留字和关键字 (4)、变量的名字是区分大小写的 -(5)、标识符一定要见名知意: +(5)、标识符一定要见名知意 ### 二、Dart 常量 @@ -264,6 +264,31 @@ var list2 = [0, ...?list]; assert(list2.length == 1); ``` +* 赋值运算符 + +??== + +```dart +var num1 = 10; +num1 ??= 20; +print(num1); +=> num1 = 10; +当变量为null时,使用后面的内容进行赋值 +当变量有值时,使用自己原来的值 +``` + +* as、is、is! 运算符(类型测试运算符) + +``` +as:用于类型转换 +is:如果对象具有指定的类型,则为True +is!:如果对象不具有指定的类型,则为True +``` + + + + + ### 五、类型转换 * Number与String类型之间的转换 @@ -397,6 +422,8 @@ var func1 = () {}; // 函数嵌套函数,并在return中返回函数 ``` +* 没有函数重载 + ### 七、Dart类/对象 > Dart中所有的东西都是对象,所有的对象都是继承自object类 @@ -650,6 +677,38 @@ void work() { * 如果把抽象类当做接口实现的话,就必须得实现抽象类里面定义的所有属性和方法 * 抽象类不能被实例化,只有继承它的子类可以 +```dart +// 抽象方法 +abstract class Shape { + getArea(); +} + +class Circle extends Shape { + double r; + + Circle(this.r); + + @override + getArea() { + return r * r * 3.14; + } +} + +class Reactangle extends Shape { + double w; + double h; + + Reactangle(this.w, this.h); + + @override + getArea() { + return w * h; + } +} +``` + + + ### 16、接口 > 定义接口时没有interface关键字,而是普通类或抽象类都可以作为接口被实现 diff --git "a/Flutter/Flutter-\350\256\244\350\257\206.md" "b/Flutter/Flutter-\350\256\244\350\257\206.md" index 196a2b9..bf62172 100644 --- "a/Flutter/Flutter-\350\256\244\350\257\206.md" +++ "b/Flutter/Flutter-\350\256\244\350\257\206.md" @@ -2,4 +2,39 @@ ### 特点 -* 是谷歌主导研发的一个多平台UI工具包 \ No newline at end of file +* 是谷歌主导研发的一个多平台UI工具包 + +### 快捷键(Mac平台) + +1、AndriodStudio中 + +* 快速修改Widget类型 + +```shell +Alt + Enter +``` + +* 查看某个抽象类的实现类 + +```shell +Option + Command + B +``` + +* 给Widget外层添加Container + +```shell +Option + Enter +``` + +* 抽取新的Widget + +```shell +Option + Command + w +默认情况下,AndriodStudio中会与kotlin中冲突,需要删除下 +``` + + + +### 参考来源 + +* https://blog.csdn.net/wywinstonwy/article/details/122078050 \ No newline at end of file diff --git "a/Python/images/\346\226\207\344\273\266\346\223\215\344\275\2341.jpg" "b/Python/images/\346\226\207\344\273\266\346\223\215\344\275\2341.jpg" new file mode 100644 index 0000000..93ec485 Binary files /dev/null and "b/Python/images/\346\226\207\344\273\266\346\223\215\344\275\2341.jpg" differ diff --git "a/Python/images/\347\233\256\345\275\225\346\223\215\344\275\234.jpg" "b/Python/images/\347\233\256\345\275\225\346\223\215\344\275\234.jpg" new file mode 100644 index 0000000..c7554dd Binary files /dev/null and "b/Python/images/\347\233\256\345\275\225\346\223\215\344\275\234.jpg" differ diff --git "a/Python/python2\345\244\204\347\220\206\344\270\255\346\226\207.md" "b/Python/python2\345\244\204\347\220\206\344\270\255\346\226\207.md" new file mode 100644 index 0000000..1b43b4b --- /dev/null +++ "b/Python/python2\345\244\204\347\220\206\344\270\255\346\226\207.md" @@ -0,0 +1,18 @@ +## Python2中如何使用中文 + +在 python2 中默认使用的是ASCII编码格式 + +在 python3 中默认使用的是UTF-8的编码格式 + +在 python 文件的第一行增加以下代码,解释器会以utf-8编码来处理python 文件 + +```python +# *-* codeing:utf8 *-* +``` + +也可以是下面的方式(**官方推荐**) + +```python +# coding=utf8 +``` + diff --git "a/Python/\345\207\275\346\225\260.md" "b/Python/\345\207\275\346\225\260.md" index 955b790..761dc2c 100644 --- "a/Python/\345\207\275\346\225\260.md" +++ "b/Python/\345\207\275\346\225\260.md" @@ -86,7 +86,21 @@ move_circle(radius=30, x=10, y=20) * 关键字参数的好处:参数可读性高,不必非得按照从左往右的顺序 -#### 可变参数(arbitrary argument) +#### 可变参数(arbitrary argument),又叫多值参数 + +Python 中有两种多值参数 + +* 参数名前增加**一个** *,可以接收**元组** +* 参数明前增加**两个** *,可以接收**字典** + +一般在给多值参数命名时,习惯使用以下两个名字 + +* ```*args``` 存放元组参数 +* ```**kwargs``` 存放字典参数 + +**args** 是**arguments**的缩写 + +**kw**是**keyword**的缩写 位置不定长参数类型 @@ -95,8 +109,6 @@ def test1(*args): print("xxx") ``` - - * *参数名:是一个可变参数,他可以将任意数量的值打包成1个元组对象 * 不能设置默认值 * 不能使用关键字参数的形式 @@ -176,8 +188,6 @@ def test1(**kwargs): print("xxx") ``` - - **info:表示info是一个字典 * 关键字参数的名字作为key diff --git "a/Python/\345\214\205.md" "b/Python/\345\214\205.md" index 2a590d7..24ddd6b 100644 --- "a/Python/\345\214\205.md" +++ "b/Python/\345\214\205.md" @@ -26,6 +26,62 @@ my_package.my_module2.info_print2() __all__ = ["模块名称1", "模块名称2"] ``` +### 发布模块 + +制作发布压缩包步骤 + +1、创建`setup.py` 文件 + +```python +from distutils.core import setup + +setup(name="message", # 包名 + version="1.0", # 版本 + description="描述", # 描述信息 + long_description="长描述", # 完整描述信息 + author="gj", # 作者 + author_email="邮件", # 邮件 + url="主页", # 主页 + py_modules=['Message.Receive_message'] + ) +``` + +2、构建模块 + +在终端中执行 + +```python +# 发布模块针对python3 +$ python3 setup.py build +# 发布模块针对python2 +$ python2 setup.py build +``` + +3、生成发布压缩包 + +```python +$ python3 setup.py sdist +``` + +### 安装模块 + +```python +# 解压缩 +$ tar -zxvf 压缩包名.tar.gz +# 安装,会自动安装到python系统目录下 +$ sudo python3 setup.py install +``` + +### 卸载模块 + +本质是直接将python系统目录下的已安装模块文件夹删除即可 + +```python +# 通过模块的__file__私有属性获取到所在路径 +XXX模块名.__file__ +$ sudo rm -f XXX模块名 +``` + ### 第三方包 一个包,就是一堆同类型功能的集合体 @@ -51,7 +107,7 @@ __all__ = ["模块名称1", "模块名称2"] 1、通过终端命令: ```shell -pip install 包名称 +sudo pip install 包名称 # 如果安装速度很慢,可以指定清华的下载源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称 ``` diff --git "a/Python/\345\257\271\350\261\241.md" "b/Python/\345\257\271\350\261\241.md" index 5699e1a..ee9e4ad 100644 --- "a/Python/\345\257\271\350\261\241.md" +++ "b/Python/\345\257\271\350\261\241.md" @@ -8,6 +8,14 @@ * 变量是没有id的,对象才有id * 如果两个对象的id相同,说明他们其实是同一个对象 +#### dir内置函数 + +在 python 中对象几乎是无处不在,例如:变量、数据、函数都是对象 + +在 python 中可以使用以下两个方法验证: + +1、在标识符/数据后输入一个**.**,然后按下Tab键,ipython 会提示 + #### 初始化方法 ```python diff --git "a/Python/\346\226\207\344\273\266.md" "b/Python/\346\226\207\344\273\266.md" index de025c8..82e7593 100644 --- "a/Python/\346\226\207\344\273\266.md" +++ "b/Python/\346\226\207\344\273\266.md" @@ -111,3 +111,14 @@ f.close() f.close() ``` +### 文件/目录的常用管理操作 + +在`python`中如果希望通过程序实现对文件的管理,需要导入`os`模块 + +#### 文件操作 + +![文件操作1](/Users/guojie/Notes/Python/images/文件操作1.jpg) + +#### 目录操作 + +![目录操作](/Users/guojie/Notes/Python/images/目录操作.jpg) diff --git "a/Python/\346\226\271\346\263\225.md" "b/Python/\346\226\271\346\263\225.md" index 359d020..b62ef01 100644 --- "a/Python/\346\226\271\346\263\225.md" +++ "b/Python/\346\226\271\346\263\225.md" @@ -1,5 +1,21 @@ ## 方法(Method) +### 实例方法 > 是一种需要通过对象来调用的特殊函数(function) -* 使用格式:对象.方法名(参数) \ No newline at end of file +* 使用格式:对象.方法名(参数) + +### 类方法 + +* 使用格式: 类名.类方法名 + +### 静态方法 + +* 定义格式: + +* 使用格式:类名.静态方法名 + +### 平日如何选择 +1、实例方法:方法内部需要访问实例属性 +2、类方法:方法内部只需要访问类属性 +3、静态方法:方法内部不需要访问实例属性和类属性 diff --git "a/Python/\351\235\242\345\220\221\345\257\271\350\261\241.md" "b/Python/\351\235\242\345\220\221\345\257\271\350\261\241.md" index 1988caa..ca6b20f 100644 --- "a/Python/\351\235\242\345\220\221\345\257\271\350\261\241.md" +++ "b/Python/\351\235\242\345\220\221\345\257\271\350\261\241.md" @@ -139,11 +139,15 @@ name is GJ age is 18 ``` +#### 内置的属性、方法 +##### 私有属性、私有方法 +定义方式 + +* 在定义属性或者方法时,在属性名或者方法名前增加两个下划线,定义的就是私有的属性或方法 -#### 内置的属性、方法 * 以下划线开头、结尾的属性、方法,通常都是对象内置的(与生俱来的) * 属性:`__doc__`、`__annotations__`、`__dict__`等 @@ -251,6 +255,49 @@ print(对象.属性) 对象.属性 = 值 ``` +#### MRO + +* Python 中针对类提供了一个内置属性 ,可以查看方法搜索顺序 + +`````` +__mro__ +`````` + +* MRO是 method resolution order ,主要用于在多继承是判断方法、属性的调用路径 + +``` +print(类型名.__mro__) +``` + +* 输出是一个元组,在python3 中所有类的基类是 object + +``` +class A: + + def __init__(self): + self.num1 = 100 + self.__num2 = 200 + + def __test(self): + print("私有方法 %d %d" % (self.num1, self.__num2)) + + def test(self): + print("test 方法") + +class M: + + def demo(self): + print("Demo方法") + +class B(A, M): + pass + +print(B.__mro__) +输出:(, , , ) +``` + + + #### 类属性 ```python @@ -510,4 +557,3 @@ Animal run Dog run Cat run ``` - diff --git "a/iOS/iOS-\347\254\246\345\217\267\345\214\226ips.md" "b/iOS/iOS-\347\254\246\345\217\267\345\214\226ips.md" index 897e336..30c6109 100644 --- "a/iOS/iOS-\347\254\246\345\217\267\345\214\226ips.md" +++ "b/iOS/iOS-\347\254\246\345\217\267\345\214\226ips.md" @@ -23,6 +23,8 @@ find /Applications/Xcode.app -name symbolicatecrash ```shell find /Applications/Xcode.app -name CrashSymbolicator -type f +具体位置 +脚本名字为CrashSymbolicator.py,可以在目录/Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources下获取脚本 ``` ##### 2、使用方式