最近实践编程,那么我来说说python语法总结

6 篇文章 0 订阅
5 篇文章 0 订阅

1、将列表、字符串、元组、字典组合成一个新的字符串:join()函数

语法: ‘sep’.join(seq)

参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串

2、拆分字符串:split()函数

split():通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)

语法:str.split(str="",num=string.count(str))[n])

参数说明:
str: 表示为分隔符,默认为空格,但是不能为空(’’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]: 表示选取第n个分片
注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略

如:

b=[“1”,“0”,“1”,“0”,“1”,“0”]
b="".join(b).split(“0”) #先将列表中的元素组成一个字符串,然后split()将b中的0去掉。返回[“1”,“1”,“1”]

3、对序列中的元素左同意操作:

如:

a=(1,0,3,0,5)
b=[str(i)for i in a]
print (b)

输出值:[‘1’, ‘0’, ‘3’, ‘0’, ‘5’]

4、对路径进行组合:os.path.join()函数:

语法: os.path.join(path1[,path2[,…]])

返回值:将多个路径组合后返回

import os
    path=os.path.join('hello','goodboy','doiido')
     
    返回值为
    'hello\goodboy\doiido'   #windows platform auto add \ between each string
    'hello/goodboy/doiido'      #linux platform auto add / between each string

5、pycharm中无法加载存在__init__.py的文件夹时,可以在pycharm中将此文件夹添加到源文件中,也可以在程序开始添加:

import sys
sys.path.append('C:/Users/dsj/Desktop/open-dobot-1.3.0/application/python/dobot'))

这样就不会出现找不到模块的情况了```

6、python string 类型 bytes类型 bytearray类型转换

1个字节=8位二进制位 1个字节=2位16进制位 1位进十六制位=4位二进制位。所以\xff为一个字节长度,\xf为占二进制的4个位

UTF-8编码方式中,英文字母用英文字母字节表示,一个汉字用三个十六进制字节表示

https://www.cnblogs.com/fieldtianye/p/8276552.html

https://www.cnblogs.com/gundan/p/8047315.html

https://blog.csdn.net/baidu_19473529/article/details/80042582

7、输出:print()与sys,stdout.write()

sys.stdout.write("hello"+'\n')
print("hello")

#两者在输出形式上是等价的,print()输出带回车,sys.stdout.write()输出没有回车。

8、读取数组中的名与内容:

list={'时间':3,"大小":5}
for file,data in list.items():
    print(file,data)

时间 3
大小 5

9、Python中的__init__()和__call__()函数

转自:https://blog.csdn.net/yaokai_assultmaster/article/details/70256621

在Python的class中有一些函数往往具有特殊的意义。init()和__call__()就是class很有用的两类特殊的函数。

__init__()

在Python中,init()函数的意义等同于类的构造器(同理,del()等同于类的析构函数)。因此,init()方法的作用是创建一个类的实例。

__call__()

Python中的函数是一级对象。这意味着Python中的函数的引用可以作为输入传递到其他的函数/方法中,并在其中被执行。
而Python中类的实例(对象)可以被当做函数对待。也就是说,我们可以将它们作为输入传递到其他的函数/方法中并调用他们,正如我们调用一个正常的函数那样。而类中__call__()函数的意义正在于此。为了将一个类实例当做函数调用,我们需要在类中实现__call__()方法。也就是我们要在类中实现如下方法:def call(self, *args)。这个方法接受一定数量的变量作为输入。
假设x是X类的一个实例。那么调用x.call(1,2)等同于调用x(1,2)。这个实例本身在这里相当于一个函数。

总结

那么,init()和__call__()的区别如下:

  1. init()的作用是初始化某个类的一个实例。

  2. call()的作用是使实例能够像函数一样被调用,同时不影响实例本身的生命周期(call()不影响一个实例的构造和析构)。但是__call__()可以用来改变实例的内部成员的值。

        def __init__(self, a, b, range):
            self.a = a
            self.b = b
            self.range = range
        def __call__(self, a, b):
            self.a = a
            self.b = b
            print('__call__ with ({}, {})'.format(self.a, self.b))
        def __del__(self, a, b, range):
            del self.a
            del self.b
            del self.range
      
    >>> xInstance = X(1, 2, 3)
    >>> xInstance(1,2)
    __call__ with (1, 2)```
    
    

10、*self._args, **kwargs


**kwargs     表示接受字典类参数;

def foo(*args, **kwargs):
    print 'args = ', args
    print 'kwargs = ', kwargs
    print '---------------------------------------'
if __name__ == '__main__':
    foo(1,2,3,4)
    foo(a=1,b=2,c=3)
    foo(1,2,3,4, a=1,b=2,c=3)
    foo('a', 1, None, a=1, b='2', c=3)

 
 
输出结果如下:

    args =  (1, 2, 3, 4) 
    kwargs =  {} 
    --------------------------------------- 
    args =  () 
    kwargs =  {'a': 1, 'c': 3, 'b': 2} 
    --------------------------------------- 
    args =  (1, 2, 3, 4) 
    kwargs =  {'a': 1, 'c': 3, 'b': 2} 
    --------------------------------------- 
    args =  ('a', 1, None) 
    kwargs =  {'a': 1, 'c': 3, 'b': '2'} 
    ---------------------------------------

可以看到,这两个是python中的可变参数。args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用args和kwargs时,必须*args参数列要在kwargs前,像foo(a=1, b=‘2’, c=3, a’, 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值