main函数

函数的装饰器和类的装饰器

寵の児 提交于 2020-03-19 04:42:35
函数的装饰器 : (1),被装饰的函数没有返回值: 1 def decorator(func): 2 def wrapper(arg): 3 t1 = time.perf_counter() 4 func(arg) 5 print(time.perf_counter()-t1) 6 return wrapper 7 8 @decorator 9 def func(arg): #没有返回值 10 i = 1 11 while(1): 12 i+=1 13 if i>1000: 14 print(arg) 15 break 16 17 18 if __name__ =="__main__": 19 import time 20 func("I am done") 21 22 ''' 23 输出: 24 I am done 25 0.00021631981540709086 26 ''' (2),被装饰的函数有返回值: 1 def decorator(func): 2 def wrapper(arg): 3 t1 = time.perf_counter() 4 i = func(arg) 5 print(time.perf_counter()-t1) 6 return i 7 return wrapper 8 9 @decorator 10 def func(arg): #有返回值 11

Go 函数

江枫思渺然 提交于 2020-03-19 03:06:54
Golang之匿名函数和闭包 Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。 使用方法如下: main.go package main import ( "fmt" ) func main() { var v func(a int) int v = func(a int) int { return a * a } fmt.Println(v(6)) //两种写法 v1 := func(i int) int { return i * i } fmt.Println(v1(7)) } GO语言的匿名函数就是闭包,以下是《GO语言编程》中对闭包的解释 基本概念 闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者 任何全局上下文中定义,而是在定义代码块的环境中定义。要执行的代码块(由于自由变量包含 在代码块中,所以这些自由变量以及它们引用的对象没有被释放)为自由变量提供绑定的计算环 境(作用域)。 闭包的价值 闭包的价值在于可以作为函数对象或者匿名函数,对于类型系统而言,这意味着不仅要表示 数据还要表示代码。支持闭包的多数语言都将函数作为第一级对象,就是说这些函数可以存储到 变量中作为参数传递给其他函数,最重要的是能够被函数动态创建和返回。 再次讲解闭包: 一个函数和与其相关的引用环境,组合而成的实体: package main import

Go 基础

删除回忆录丶 提交于 2020-03-19 02:16:34
一、Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello World!": package main import "fmt" func main() { /* 这是我的第一个简单的程序 */ fmt.Println("Hello, World!") } 让我们来看下以上程序的各个部分: 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。 下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。 下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。 下一行 /*...*/ 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式

UNIX下的LD_PRELOAD环境变量

孤者浪人 提交于 2020-03-18 13:19:46
某厂面试归来,发现自己落伍了!>>> 前言 也许这个话题并不新鲜,因为 LD_PRELOAD 所产生的问题由来已久。不过,在这里,我还是想讨论一下这个环境变量。因为这个环境变量所带来的安全问题非常严重,值得所有的 Unix 下的程序员的注意。 在开始讲述为什么要当心 LD_PRELOAD 环 境变量之前,请让我先说明一下程序的链接。所谓链接,也就是说编译器找到程序中所引用的函数或全局变量所存在的位置。一般来说,程序的链接分为静态链接和 动态链接,静态链接就是把所有所引用到的函数或变量全部地编译到可执行文件中。动态链接则不会把函数编译到可执行文件中,而是在程序运行时动态地载入函数 库,也就是运行链接。所以,对于动态链接来说,必然需要一个动态链接库。动态链接库的好处在于,一旦动态库中的函数发生变化,对于可执行程序来说是透明 的,可执行程序无需重新编译。这对于程序的发布、维护、更新起到了积极的作用。对于静态链接的程序来说,函数库中一个小小的改动需要整个程序的重新编译、 发布,对于程序的维护产生了比较大的工作量。 当 然,世界上没有什么东西都是完美的,有好就有坏,有得就有失。动态链接所带来的坏处和其好处一样同样是巨大的。因为程序在运行时动态加载函数,这也就为他 人创造了可以影响你的主程序的机会。试想,一旦,你的程序动态载入的函数不是你自己写的,而是载入了别人的有企图的代码

python 全栈开发,Day23(复习,isinstance和issubclass,反射)

岁酱吖の 提交于 2020-03-18 02:06:17
一、复习 class A: def func1(self):pass def func2(self): pass def func3(self): pass a = A() b = A() print(A.func1) print(a.func1) print(b.func1) 执行输出: <function A.func1 at 0x00000286A24EAA60> <bound method A.func1 of <__main__.A object at 0x00000286A2381048>> <bound method A.func1 of <__main__.A object at 0x00000286A2381358>> bound 表示绑定的意思。当类A实例化时,会将里面的方法与做类做绑定。 class A: def func1(self):pass # 对象与方法之间的绑定 @classmethod def func2(self): pass # 类与方法之间的绑定 @classmethod def func3(self): pass a = A() b = A() #普通方法 对象和类绑定的过程 print(A.func2) print(a.func2) # 对象能找到类 类里面绑着方法 print(b.func2) 执行输出: <bound method A

JAVA Calendar详解

霸气de小男生 提交于 2020-03-17 22:53:48
某厂面试归来,发现自己落伍了!>>> (在文章的最后,将会介绍Date类,如果有兴趣,可以直接翻到最后去阅读) 究竟什么是一个 Calendar 呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历、阴(农)历之分。它们的区别在哪呢? 比如有: 月份的定义 - 阳`(公)历 一年12 个月,每个月的天数各不同;阴(农)历,每个月固定28天 每周的第一天 - 阳(公)历星期日是第一天;阴(农)历,星期一是第一天 实际上,在历史上有着许多种纪元的方法。它们的差异实在太大了,比如说一个人的生日是"八月八日" 那么一种可能是阳(公)历的八月八日,但也可以是阴(农)历的日期。所以为了计时的统一,必需指定一个日历的选择。那现在最为普及和通用的日历就是 "Gregorian Calendar"。也就是我们在讲述年份时常用 "公元几几年"。Calendar 抽象类定义了足够的方法,让我们能够表述日历的规则。Java 本身提供了对 "Gregorian Calendar" 规则的实现。我们从 Calendar.getInstance() 中所获得的实例就是一个 "GreogrianCalendar" 对象(与您通过 new GregorianCalendar() 获得的结果一致)。 下面的代码可以证明这一点: import java.io.*; import java.util.*;

Java程序的方法设计

喜欢而已 提交于 2020-03-17 22:26:41
Java程序的方法设计 本文关键字:Java、方法定义、方法设计、方法调用、方法重载 一、方法的定义 我们在学习Java编程以后接触到的第一个程序就是"Hello World”,在这当中涉及到两个主要的结构:类和main方法,当时我们只是说明了main方法是程序的入口,那么当我们想要自己定义一个方法时应该如何下手呢? 1. 概念与作用 首先我们要明确方法的概念和作用,从名称上来说,方法也可以被称为函数,是用来解决同一类的问题的。从代码的结构上来说,定义方法可以减少重复的代码,也能使得整个程序结构更加清爽。 假如我们需要计算两个数的加和 public class Test{ public static void main(String[] args){ // 定义两个变量,so easy int a = 10,b = 5; int c = a + b; System.out.println(c);// 15 } } 如果我们需要多次反复执行同一个逻辑,那么就会产生很多相同的代码 public class Test{ public static void main(String[] args){ int a = 10,b = 5; int c = 20,d = 10; // 可以看到,虽然变量名称不同,但是计算的逻辑是相同的 // 如果某一段代码反复出现

Golang 中常见数据格式处理

为君一笑 提交于 2020-03-17 12:30:53
数据格式介绍 数据格式是系统中数据交互不可缺少的内容 这里主要介绍 JSON 、 XML 、 MSGPack JSON json 是完全独立于语言的文本格式,是 k-v 的形式 name:zs 应用场景:前后端交互,系统间数据交互 json 使用 go 语言内置的 encoding/json 标准库 编码 json 使用 json.Marshal() 函数可以对一组数据进行 JSON 格式的编码 生成 json 格式 通过结构体生成 JSON 需要格式化的结构体中的字段必须是一个外部可调用的字段(首写字母大写),否则再 json 包中无法识别则读取不到 输出的 json key 是字段名称 package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int } func main() { p := &Person{"zs", 18} // 生成json b, err := json.Marshal(p) if err != nil { fmt.Println("json 序列化失败", err) return } fmt.Println(string(b)) // 格式化输出 b, err = json.MarshalIndent(p, "", " ") if err !=

Python基础(第八节)

我的未来我决定 提交于 2020-03-17 09:48:50
方法没有重载 1、在其他语言中,可以定义多个同名的方法 2、Python中方法的参数没有声明类型,参数的数量也可以由可变参数控制,因此Python中没有方法的重载 3、定义一个方法即可有多种调用方式,相当于实现了其他语言中的方法的重载 4、定义多个同名方法时,只有最后一个有效 方法的动态性 Python是动态语言,可以动态地为类添加新方法,或者动态地修改类的已有的方法 class Person: def work(self): print("努力工作!") def play_game(a): print("{}在玩游戏".format(a)) def work2(n): print("努力赚大钱,努力工作!") Person.play = play_game p = Person() p.work() p.play() #解释器解释为Person.play(p) Person.work = work2 #二者形参数量要对应 p.work() 运行结果为: 努力工作! <__main__.Person object at 0x00000287ABF64CF8>在玩游戏 努力赚大钱,努力工作! 私有属性和私有方法 1、Python对于类的成员没有严格的访问控制权限,这与其他面向对象语言有区别 2、关于私有属性和私有方法有如下要点: ①通常我们约定,两个下划线开头的属性是私有的

pyqtgraph绘制曲线图(2)

孤者浪人 提交于 2020-03-17 07:48:56
pyqtgraph 绘制静态图,并将其加入到窗体中(GUI) 导入相关库和数据 import pyqtgraph as pg import pandas as pd import sys import numpy as np from PyQt5 import QtCore , QtWidgets x = np . random . random ( 10 ) pg . plot ( x , title = "坚持" ) #该行代码只是绘制了图形,但是没有执行的GUI窗口,所以直会一闪而过 x = [ 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 , 22 , 24 , 26 , 28 , 30 , 32 , 34 , 36 , 38 , 40 , 42 , 44 , 46 , 48 , 50 ] y = [ 10 , 12 , 15 , 16 , 20 , 25 , 26 , 28 , 30 , 25 , 36 , 38 , 39 , 55 , 42 , 41 , 20 , 12 , 10 , 23 , 2 , 35 , 36 , 37 , 56 , ] #绘制窗体,并将图形添加到窗体中 # 主窗口类 class MainWidget ( QtWidgets . QMainWindow ) : def __init__ ( self )