num

记录遇到的Python陷阱和注意点

一个人想着一个人 提交于 2020-03-05 13:24:02
最近使用Python的过程中遇到了一些坑,例如用 datetime.datetime.now() 这个可变对象作为函数的默认参数,模块循环依赖等等。 在此记录一下,方便以后查询和补充。 避免可变对象作为默认参数 在使用函数的过程中,经常会涉及默认参数。在Python中,当使用可变对象作为默认参数的时候,就可能产生非预期的结果。 下面看一个例子: def append_item(a = 1, b = []): b.append(a) print b append_item(a=1) append_item(a=3) append_item(a=5) 结果为: [1] [1, 3] [1, 3, 5] 从结果中可以看到,当后面两次调用 append_item 函数的时候,函数参数b并没有被初始化为 [] ,而是保持了前面函数调用的值。 之所以得到这个结果,是因为在Python中, 一个函数参数的默认值,仅仅在该函数定义的时候,被初始化一次 。 下面看一个例子证明Python的这个特性: class Test(object): def __init__(self): print("Init Test") def arg_init(a, b = Test()): print(a) arg_init(1) arg_init(3) arg_init(5) 结果为: Init Test 1 3

[Java面试十二]数据库概念相关

南楼画角 提交于 2020-03-05 12:54:02
1. 什么是存储过程?它有什么优点? 答:存储过程是一组予编译的 SQL 语句, 它的优点有: 允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。 允许更快执行,如果某操作需要执行大量 SQL 语句或重复执行,存储过程比 SQL 语句执行的要快。 减少网络流量,例如一个需要数百行的 SQL 代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。 更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。 2. oracle的 存储过程和函数有什么区别? Oracle 中的函数与存储过程的 区别 : A: 函数必须有返回值 , 而过程没有 . B: 函数可以单独执行 . 而过程必须通过 execute 执行 . C: 函数可以嵌入到 SQL 语句中执行 . 而过程不行 . 其实我们可以将比较复杂的查询写成函数 . 然后到存储过程中去调用这些函数 . Oracle 中的函数与存储过程的 特点 : A. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 B. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 C. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于 FROM 关键字的后面。 3. 什么是事务? 答

编写程序,观察线程中加锁和不加锁的区别(互斥锁)

亡梦爱人 提交于 2020-03-05 11:54:23
public class TestSynchronized implements Runnable{ Timer timer = new Timer(); public static void main(String[] args){ TestSynchronized syn = new TestSynchronized(); Thread t1 = new Thread(syn); t1.setName("t1"); Thread t2 = new Thread(syn); t2.setName("t2"); t1.start(); t2.start(); } public void run(){ timer.show(); } } class Timer { private static int num = 0; public synchronized void show(){ num++; try{ Thread.sleep(1); } catch(InterruptedException e){ e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "是第" + num + "个调用我的"); } } 来源: https://www.cnblogs.com/yxfyg/p

js基础知识3

拥有回忆 提交于 2020-03-05 06:27:09
系统对话框方法 警告框 window.alert('mcw'); 效果显示 确认框 var a = window . confirm ( '你确定要离开网站?' ); console . log ( a ); 如果点击确定, a 的值返回 true ,点击取消, a 的值返回 false 弹出框 var name = window.prompt('请输入你早晨吃了什么?','mcw'); console.log(name); prompt() 方法接收两个参数,第一个参数是显示的文本,第二个参数是默认的文本,如果点击了确定,则 name 的结果为 mjj 一次性定时器 setTimeout() setTimeout()方法表示一次性定时任务做某件事情,它接收两个参数,第一个参数为执行的函数,第二个参数为时间(毫秒计时:1000毫秒==1秒) window.setTimeout(function () { console.log('111'); },2000); console.log(2222); 周期性定时器。 setInterval() setInterval() 方法表示周期性循环的定时任务.它接收的参数跟 setTimeout() 方法一样. var num=0; window.setInterval(function () { num++; console.log(num

1.Python学习笔记:[Print()格式;缩进;变量命名;注释;字符串拼接;表达式和运算符;变量赋值;输入;强制类型转换;IF语句]

对着背影说爱祢 提交于 2020-03-05 04:02:53
一、Print()格式: print() #等价于print(end="\n") print('hello word') 或 print("hello word") print('hello word\n'*8) 结果: print('hello word') print('hello word') print('hello word') 结果: print('hello word',end=" ")    #输出在同一行 print('hello word',end=" ") print('hello word',end=" ") 结果: 二、缩进: Tab不等于四个空格 缩进级别一致(官方建议四个空格) 三、变量命名: 具有描述性:Student_number(良好习惯) 支持中文命名,但不推荐 不能以数字开头 变量名只能数字字母组成,不可一是空格或特殊字符(#?<,./$%^#等) 保留字符不用做变量:print=5(不可) Python不分常量,变量。全部大写默认常量(STUDENT_NUMBER) Python区分大小写 四、注释: 单行注释: #print() 多行注释:(三引号。单引,或双引) '''print() print() print()''' 解释: print() #打印 多行打印: msg='''hello word hello word hello

Python学习之旅_02day

点点圈 提交于 2020-03-05 03:56:27
一.回顾01day学习的东西 1.变量定义:1.1为了存储程序运算过程中的一些中间结果,为了方便日后调用 1.2存在一定的描述性,让大众一看就知道该变量的用途 2.变量的命名规则: 2.1 具有描述性 2.2 变量只能由字母,数字和下划线组成 2.3 不能以关键字(保留字)命名 2.4 驼峰式命名和下划线分割单词 2.5 变量名区分大小写 2.6 不能以中文为变量名 2.7 不能以数字开头 3.缩进 表示是一坨代码,利用相同的缩进表示 4. if a=1 b=2 if a > b:   print("yes") elif a == b:   print("boom") else: print("no") 5.注释 单行注释:# 多行注释:"""***""" 或 '''***''' 6.字符串的拼接 abc qwe print('abc'+'qwe') abcqwe 7.算术运算符 若区分不了优先级,可使用小括号去运算"()";python不允许使用中括号'[]'区分算术等级 1 >>> 1+2 2 3 *加 3 >>> 2*2 4 4 *程 5 >>> 3-2 6 1 *减 7 >>> 4/2 8 2.0 *除 9 >>> 5//2 10 2 *整除 11 >>> 5/2 12 2.5 *除 13 >>> 9%2 14 1 *取余 15 >>> 2**10 16 1024 *幂运算

刷题34(牛客1道题+力扣2道题)

限于喜欢 提交于 2020-03-05 03:44:10
62.不用做任何比较判断运算符找出两个整数中的较大的值 题目链接 https://www.nowcoder.com/practice/02ae5ccb63064bbdb2366417d8b70ff3?tpId=101&&tqId=33211&rp=5&ru=/activity/oj&qru=/ta/programmer-code-interview-guide/question-ranking 题目描述 给定两个32位整数a和b,返回a和b中较大的,要求不能用任何比较判断运算符。 输入描述: 输出两个整数a和b,a和b均为32位整数。 输出描述: 输出一个整数,两个数中较大的那一个。 示例1 输入 1 0 输出 1 备注: 时间复杂度O(1)O(1),额外空间复杂度O(1)O(1)。 重难点 sort排序 题目分析 获取整数a,b; 使用sort函数排序,比较数值大小; 输出较大的数:下标为1的数。 var input = readline().split(' '); var num = []; num[0] = parseInt(input[0]); num[1] = parseInt(input[1]); num.sort(function(a,b){ return a-b; }); print(num[1]);    63. 1365. 有多少小于当前数字的数字 题目来源

PHP数字金额转换大写金额

↘锁芯ラ 提交于 2020-03-05 01:54:30
早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下。金额转换的函数方法有很多,都很不错。不过这个是小崔刚工作的时候写的一个转换函数,多少还是有点纪念意义。如有问题请朋友们指出,小崔及时修正。谢谢啦! 废话不多说直接上代码: 1 <?php 2 3 /** 4 * 数字金额转换大写数字 5 * $num 数字类型 6 */ 7 8 function inttodaxie($num) { 9 //判断$num是否数字 10 if(!is_numeric($num)) return -1; 11 $dint = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); 12 $len = strlen($num); 13 $dstr = ''; 14 for($i = 0; $i <= $len; $i++) { 15 $key_ = substr($num, $i, 1); 16 $dstr .= $dint[$key_]; 17 } 18 return $dstr; 19 } 20 21 $result = inttodaxie(90011234); 22 var_dump($result); 23 echo '<br>'; 以上是基础转换代码,在这个基础上进行二次改造: 1 <?php 2 3 /** 4 *

Django--分页器(paginator)

狂风中的少年 提交于 2020-03-05 01:26:40
1 Django的分页器(paginator)简介 在页面显示分页数据,需要用到Django分页器组件 from django.core.paginator import Paginator Paginator对象: paginator = Paginator(user_list, 10) # per_page: 每页显示条目数量 # count: 数据总个数 # num_pages:总页数 # page_range:总页数的索引范围,如: (1,10),(1,200) # page: page对象 page对象:page=paginator.page(1) # has_next 是否有下一页 # next_page_number 下一页页码 # has_previous 是否有上一页 # previous_page_number 上一页页码 # object_list 分页之后的数据列表 # number 当前页 # paginator paginator对象 2 应用View层 from django.shortcuts import render,HttpResponse # Create your views here. from app01.models import * from django.core.paginator import Paginator,

十进制数转换成任意进制数

巧了我就是萌 提交于 2020-03-05 00:11:44
十进制转换为任意进制 可以采用除基取余法将十进制整数转换为 B 进制整数: 将十进制整数除以 B ,得到商和余数,余数对应为 B 进制数低位的值; 继续让商再除以 B ,得到商和余数,。。。。。。 重复此操作,直到商为 0. 如此得到的一系列余数就是相应 B 进制数的各位数字, 先得到的是低位,后得到的是高位。 代码实现如下: #include "stdio.h" void DecToN(long num,int B) { int a[100] ={0}; int count=0; while(num>0) { a[count++]=num%B; //保存余数 num=num/B; } for(int i = count - 1; i >=0; i--) //输出 { if(a[i]>=10)//十六进制要特殊处理 { printf("%c",'A'+a[i]-10); } else { printf("%d",a[i]); } } printf("\n"); } int main(int argc, char* argv[]) { long num =206; int B = 16; DecToN(num,B); return 0; } 来源: https://www.cnblogs.com/marshhu/p/3434112.html