1. 下面两段代码的输出是什么?
第一段代码:
a = 1
def fun(a):
a = 2
fun(a)
print(a)
输出结果:
1
第二段代码:
a = []
def fun(a):
a.append(1)
fun(a)
print(a)
输出结果:
[1]
2. 写一个装饰器
def singleton(cls, *args, **kw):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls(*args, **kw)
return instances[cls]
return getinstance
@singleton
class MyClass:
...
3. Python中会有函数或成员变量包含单下划线前缀和结尾,和双下划线前缀结尾,例如_x_
,或__x__
,区别是什么?
_x_
: 不能用于from module import *
以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。__x__
: 对Python 来说有特殊含义,魔法方法。
4. 描述__new__
和__init__
的区别。
__new__
至少要有一个参数cls
,代表要实例化的类,此参数在实例化时由Python解释器自动提供__new__
必须要有返回值,返回实例化出来的实例,这点在自己实现__new__
时要特别注意,可以return父类__new__
出来的实例,或者直接是object的__new__
出来的实例__init__
有一个参数self
,就是这个__new__
返回的实例,__init__
在__new__
的基础上可以完成一些其它初始化的动作,__init__
不需要返回值我们可以将类比作制造商,
__new__
方法就是前期的原材料购买环节,__init__
方法就是在有原材料的基础上,加工,初始化商品环节
5. 请写出你使用过的SQL函数(function)
- avg(column): 返回某列的平均值
- count(column): 返回某列的行数(不包括NULL值)
- count(*): 返回被选行数
- max(column): 返回某列的最大值
- min(column): 返回某列的最小值
- sum(column): 返回某列的总和
6. 请写出Mysql中有多少中连接(join)方式。
- inner join: 内连接
- join: 如果表中有至少一个匹配,则返回行
- left join:即使右表中没有匹配,也从左表返回所有的行。
- right join: 即使左表中没有匹配,也会从由表返回所有的行
- full join: 只要其中一个表中存在匹配,就返回行。
7. 有两张MySQL的表,请编写一段SQL,查询每个省有多少数量的医生。
Table A 医院
Hospital_id | Province | name |
---|---|---|
1 | 四川 | 华西医院 |
2 | 河北 | 河北省人民医院 |
3 | 北京 | 协和医院 |
4 | 北京 | 北医三院 |
Table B 医生
id | name | Hospital_id |
---|---|---|
1 | 王强 | 2 |
2 | 张倩 | 3 |
3 | 赵日天 | 4 |
4 | 叶良辰 | 1 |
select count(Province) from table_a,table_b where table_a.Hospital_id = table_b.hospital_id group by Province;