python——一些基础语法

摘自莫凡python(回顾python语法的时候做的笔记)

自调用

如果想要在执行脚本的时候执行一些代码,比如单元测试,可以在脚本最后加上单元测试 代码,但是该脚本作为一个模块对外提供功能的时候单元测试代码也会执行,这些往往我们不想要的,我们可以把这些代码放入脚本最后:

如果执行该脚本的时候,该 if 判断语句将会是 True,那么内部的代码将会执行。 如果外部调用该脚本,if 判断语句则为 False,内部代码将不会执行。

if __name__ == '__main__':
    #code_here

可变参数

注意可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数。

def report(name, *grades):
    total_grade = 0
    for grade in grades:
        total_grade += grade
    print(name, 'total grade is ', total_grade)

定义了一个函数,传入一个参数为 name, 后面的参数 *grades 使用了 *
修饰,表明该参数是一个可变参数,这是一个可迭代的对象。该函数输入姓名和各科的成绩,输出姓名和总共成绩。所以可以这样调用函数
report(‘Mike’, 8, 9),输出的结果为 Mike total grade is 17, 也可以这样调用
report(‘Mike’, 8, 9, 10),输出的结果为 Mike total grade is 27

关键词参数

def portrait(name, **kw):
    print('name is', name)
    for k,v in kw.items():
        print(k, v)

定义了一个函数,传入一个参数 name, 和关键字参数 kw,使用了 ** 修饰。
表明该参数是关键字参数,通常来讲关键字参数是放在函数参数列表的最后。
如果调用参数

portrait('Mike', age=24, country='China', education='bachelor') 

输出:

name is Mike
age 24
country China
education bachelor

元组Tuple&列表List

元组的元素是不可变的,元组的元素的元素是可变的

元组Tuple

a_tuple = (12, 3, 5, 15 , 6)

列表List

a_list = [12, 3, 67, 7, 82]

错误处理 try…as

处理错误:会使用到循环语句。首先报错:没有这样的文件No such file or directory. 然后决定是否输入y, 输入y以后,系统就会新建一个文件(要用写入的类型),再次运行后,文件中就会写入ssss

try:
    file=open('eeee.txt','r+')
except Exception as e:
    print(e)
    response = input('do you want to create a new file:')
    if response=='y':
        file=open('eeee.txt','w')
    else:
        pass
else:
    file.write('ssss')
    file.close()

ZIP

zip函数接受任意多个(包括0个和1个)序列作为参数,合并后返回一个tuple列表

a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab))  #需要加list来可视化这个功能
"""
[(1, 4), (2, 5), (3, 6)]
"""

lambda

lambda定义一个简单的函数,实现简化代码的功能

fun= lambda x,y:x+y
x=int(input('x='))    #这里要定义int整数,否则会默认为字符串
y=int(input('y='))
print(fun(x,y))

map

map是把函数和参数绑定在一起。

>>> def fun(x,y):
    return (x+y)
>>> list(map(fun,[1],[2]))
"""
[3]
"""
>>> list(map(fun,[1,2],[3,4]))
"""
[4,6]
"""

id&浅拷贝&深拷贝

什么是id?一个对象的id值在CPython解释器里就代表它在内存中的`地址

浅拷贝:只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已

深拷贝:deepcopy对外围和内部元素都进行了拷贝对象本身,而不是对象的引用

表现为:浅拷贝时被拷贝对象修改内部元素,会改变拷贝对象的内部元素

set

Set 最主要的功能就是寻找一个句子或者一个 list 当中不同的元素

清除元素

unique_char.remove('x')
print(unique_char)
# {'b', 'd', 'c', 'a'}

unique_char.discard('d')
print(unique_char)
# {'b', 'c', 'a'}

unique_char.clear()
print(unique_char)
# set()

筛选操作

unique_char = set(char_list)
print(unique_char.difference({'a', 'e', 'i'}))
# {'b', 'd', 'c'}

print(unique_char.intersection({'a', 'e', 'i'}))
# {'a'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值