python学习笔记一(语法)

来源:互联网 发布:在div中加js函数 编辑:程序博客网 时间:2024/05/05 14:59
持续更新中

1、list,tuple,dict,set

  • list为可变数组,内容可变,定义方式如下:[‘a’, ‘b’, 3, [4, 5] ]。
  • tuple为不可变数组,内容不可变,定义方式如下:(‘a’, ‘b’, 3, [4, 5])。
    • 只有一个数字的tuple是,需要使用a=(1 ,)方式定义,否则会识别为int型。
  • dict为字典,可以主动修改key,定义方式如下:[‘a’:1, ‘b’:2, ‘c’:[4, 5]]
  • set为不可存在重复选项的list

2、函数接收可变参数可使用如下方法

def calc(*numbers):    sum = 0    for i in numbers:        sum += i*i    return sumprint(calc(1,2,3,4))

3、函数接收关键字参数可使用如下方法

def info(name, age, **other):    print('name: ', name, 'age: ', age, 'other :', other)extra = {'city': 'beijing', 'company': 'baidu'}info('cheng', 25, city:'beijing', 'company':'baidu')info('cheng', 25, **extra)

4、函数接收命名关键字参数可使用如下方法

def info2(name, age, *, city='fuzhou', company):    print(name, age, city, company)info2('chengwei', 25, company='baidu')

其中*不需要传入,为标记,说明后面的参数为命名关键字参数,如果没有指定默认值,则该参数为必填参数。
如果已经存在可变参数,则这个*可以省略,如下

def info2(name, age, *args, city='fuzhou', company):    print(name, age, city, company)info2('chengwei', 25, aaa, bbb, company='baidu')

5、参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数,如下

def info3(name, age, sex='male', *numbers, city='beijing', company, **other):    print(name, age, sex, numbers, city, company, other)info3('cheng', 25, 'male', 1, 2, city='fuzhou', company='baidu', school='university')

6、对于任意的函数,都可以使用tuple与dict的组合来传入参数,如下

def info3(name, age, sex='male', *numbers, city='beijing', company, **other):    print(name, age, sex, numbers, city, company, other)args = ('xing', 22, 'cheng', 1, 2)kw = {'city': 'fuzhou', 'company': 'wangyi', 'school': 'highschool'}info3(*args, **kw)//输出 xing 22 cheng (1, 2) fuzhou wangyi {'school': 'highschool'}

7、python的切片功能,能够是用在list, tuple,str中,如下

>>> l = range(100)>>> l[1:10][1, 2, 3, 4, 5, 6, 7, 8, 9]>>> l[:10][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> l[-10:][90, 91, 92, 93, 94, 95, 96, 97, 98, 99]>>> l[:10:2][0, 2, 4, 6, 8]>>> l[::5][0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]>>> t = (1,2,3,4,5,6)>>> t[:3](1, 2, 3)>>> s = "hello world">>> s[:5]'hello'#python中最简单的将字符串逆序输出的方法>>> s'12345'>>> s[::-1]'54321'

8、装饰器的使用

#!/usr/bin/env python3# -*- coding: utf-8 -*-import functoolsdef log(func):    def wrapper(*args, **kw):        print('call %s()' % func.__name__)        return func(*args, **kw)    return wrapper@logdef now():    print('2015-01-01')now()#此时now的__name__属性已经变成了wrapperprint(now.__name__)def log2(text):    def decorator(func):        def wrapper(*args, **kw):            print('call %s(), %s' % (func.__name__, text))            return func(*args, **kw)        return wrapper    return decorator@log2('hello world!')def now2():    print('2015-01-02')now2()print(now2.__name__)def log3(text):    def decorator(func):        #使用functools.wraps方法来修改wrapper的__name__属性        @functools.wraps(func)        def wrapper(*args, **kw):            print('call %s(), %s' % (func.__name__, text))            return func(*args, **kw)        return wrapper    return decorator@log3('hello world!')def now3():    print('2015-01-03')now3()print(now3.__name__)def log4(text):    def decorator(func):        #使用functools.wraps方法来修改wrapper的__name__属性        @functools.wraps(func)        def wrapper(*args, **kw):            print('before call %s(), %s' % (func.__name__, text))            res = func(*args, **kw)            print('after call')            return res        return wrapper    return decorator@log4('hello world!')def now4():    print('2015-01-03')now4()# call now()# 2015-01-01# wrapper# call now2(), hello world!# 2015-01-02# wrapper# call now3(), hello world!# 2015-01-03# now3# before call now4(), hello world!# 2015-01-03# after cal

9、高阶函数map,reduce,sorted
sorted的用法

#正常用法>>> sorted([36, 5, -12, 9, -21])[-21, -12, 5, 9, 36]#此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:>>> sorted([36, 5, -12, 9, -21], key=abs)[5, 9, -12, -21, 36]>>> L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]>>> def sort_by_name(l):...     return l[0]... >>> sorted(L, key=sort_by_name)[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]>>> def sort_by_score(l):...     return l[1]... >>> sorted(L, key=sort_by_score)[('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]>>> 
0 0
原创粉丝点击