精华内容
下载资源
问答
  • 30 个 Python 常用极简代码,拿走就用

    万次阅读 2021-01-31 21:48:19
    原标题:30 个 Python 常用极简代码,拿走就用文章转自:Python程序员学 Python 怎样才最快,当然是实战各种小项目, 只有自己去想与写,才记得住规则。本文是 30 个极简任务,初学者可以尝试着自己实现;本文同样也...

    原标题:30 个 Python 常用极简代码,拿走就用

    文章转自:Python程序员

    学 Python 怎样才最快,当然是实战各种小项目, 只有自己去想与写,才记得住规则。本文是 30 个极简任务,初学者可以尝试着自己实现;本文同样也是 30 段代码,Python 开发者也可以看看是不是有没想到的用法。

    9c79ac41a249c74c78e08803ecbe4252.png

    、1

    重复元素判定

    以下方法可以检查给定列表是不是存在重复元素,它会使用 set 函数来移除所有重复元素。

    def all_unique(lst):

    return len(lst)== len(set(lst))

    x = [ 1, 1, 2, 2, 3, 2, 3, 4, 5, 6]

    y = [ 1, 2, 3, 4, 5]

    all_unique(x) # False

    all_unique(y)# True

    2

    字符元素组成判定

    检查两个字符串的组成元素是不是一样的。

    from collections importCounter

    def anagram(first, second):

    return Counter(first)== Counter(second)

    anagram( "abcd3", "3acdb") # True

    3

    内存占用

    importsys

    variable = 30

    print(sys.getsizeof(variable)) # 24

    4

    字节占用

    下面的代码块可以检查字符串占用的字节数。

    def byte_size(string):

    return(len(string.encode( 'utf-8')))

    byte_size( '')# 4

    byte_size( 'Hello World')# 11

    5

    打印 N 次字符串

    该代码块不需要循环语句就能打印 N 次字符串。

    n = 2

    s = "Programming"

    print(s * n)

    # ProgrammingProgramming

    6大写第一个字母

    以下代码块会使用 title 方法,从而大写字符串中每一个单词的首字母。

    s = "programming is awesome"

    print(s.title)

    # Programming Is Awesome

    7

    分块

    给定具体的大小,定义一个函数以按照这个大小切割列表。

    from math importceil

    def chunk(lst, size):

    return list(

    map(lambda x: lst[x * size:x * size + size],

    list(range( 0, ceil(len(lst) / size)))))

    chunk([ 1, 2, 3, 4, 5], 2)

    # [[1,2],[3,4],5]

    8

    压缩

    这个方法可以将布尔型的值去掉,例如(False,None,0,“”),它使用 filter 函数。

    def compact(lst):

    return list(filter(bool, lst))

    compact([ 0, 1, False, 2, '', 3, 'a', 's', 34])

    # [ 1, 2, 3, 'a', 's', 34 ]

    9

    解包

    如下代码段可以将打包好的成对列表解开成两组不同的元组。

    array = [[ 'a', 'b'], [ 'c', 'd'], [ 'e', 'f']]

    transposed = zip(*array)

    print(transposed)

    # [( 'a', 'c', 'e'), ( 'b', 'd', 'f')]

    10 链式对比

    我们可以在一行代码中使用不同的运算符对比多个不同的元素。

    a = 3

    print( 2< a < 8) # True

    print( 1== a < 2)# False

    11 逗号连接

    下面的代码可以将列表连接成单个字符串,且每一个元素间的分隔方式设置为了逗号。

    hobbies = [ "basketball", "football", "swimming"]

    print( "My hobbies are: "+ ", ".join(hobbies))

    # My hobbies are: basketball, football, swimming

    12 元音统计

    以下方法将统计字符串中的元音 (‘a’, ‘e’, ‘i’, ‘o’, ‘u’) 的个数,它是通过正则表达式做的。

    importre

    def count_vowels(str):

    return len(len(re.findall(r '[aeiou]', str, re.IGNORECASE)))

    count_vowels( 'foobar')# 3

    count_vowels( 'gym')# 0

    13 首字母小写

    如下方法将令给定字符串的第一个字符统一为小写。

    def decapitalize(string):

    return str[:1]. lower+ str[1:]

    decapitalize( 'FooBar')# 'fooBar'

    decapitalize( 'FooBar')# 'fooBar'

    14 展开列表

    该方法将通过递归的方式将列表的嵌套展开为单个列表。

    def spread(arg):

    ret = []

    fori in arg:

    ifisinstance(i, list):

    ret. extend(i)

    else:

    ret. append(i)

    return ret

    def deep_flatten(lst):

    result = []

    result.extend(

    spread(list(map(lambda x: deep_flatten(x) iftype(x)== list elsex, lst))))

    returnresult

    deep_flatten([ 1, [ 2], [[ 3], 4], 5])# [1,2,3,4,5]

    15 列表的差

    该方法将返回第一个列表的元素,其不在第二个列表内。如果同时要反馈第二个列表独有的元素,还需要加一句 set_b.difference(set_a)。

    def difference(a, b):

    set_a = set(a)

    set_b = set(b)

    comparison = set_a.difference(set_b)

    returnlist(comparison)

    difference([ 1, 2, 3], [ 1, 2, 4]) # [ 3]

    16 通过函数取差

    如下方法首先会应用一个给定的函数,然后再返回应用函数后结果有差别的列表元素。

    def difference_by(a, b, fn):

    b = set(map(fn, b))

    return[ item foritem in a iffn(item)not in b]

    from math importfloor

    difference_by([ 2.1, 1.2], [ 2.3, 3.4],floor)# [1.2]

    difference_by([{ 'x': 2}, { 'x': 1}], [{ 'x': 1}], lambda v : v[ 'x'])

    # [ { x: 2} ]

    17 链式函数调用

    你可以在一行代码内调用多个函数。

    def add(a, b):

    return a + b

    def subtract(a, b):

    return a - b

    a, b = 4, 5

    print((subtract ifa > b elseadd)(a, b)) # 9

    18 检查重复项

    如下代码将检查两个列表是不是有重复项。

    def has_duplicates(lst):

    return len(lst)! = len(set(lst))

    x = [ 1, 2, 3, 4, 5, 5]

    y = [ 1, 2, 3, 4, 5]

    has_duplicates(x) # True

    has_duplicates(y)# False

    19 合并两个字典

    下面的方法将用于合并两个字典。

    def merge_two_dicts(a, b):

    c = a.copy # make a copy of a

    c.update(b) # modify keys and values of a with the once from b

    returnc

    a={ 'x': 1, 'y': 2}

    b={ 'y': 3, 'z': 4}

    print(merge_two_dicts(a,b))

    #{ 'y': 3, 'x': 1, 'z': 4}

    在 Python 3.5 或更高版本中,我们也可以用以下方式合并字典:

    def merge_dictionaries(a, b)

    return {**a, **b}

    a = { 'x': 1, 'y': 2}

    b = { 'y': 3, 'z': 4}

    print(merge_dictionaries(a, b))

    # { 'y': 3, 'x': 1, 'z': 4}

    20 将两个列表转化为字典

    如下方法将会把两个列表转化为单个字典。

    def to_dictionary(keys, values):

    return dict(zip(keys, values))

    keys = [ "a", "b", "c"]

    values = [ 2, 3, 4]

    print(to_dictionary(keys, values))

    #{ 'a': 2, 'c': 4, 'b': 3}

    21 使用枚举

    我们常用 For 循环来遍历某个列表,同样我们也能枚举列表的索引与值。

    list = [ "a", "b", "c", "d"]

    forindex, element in enumerate(list):

    print( "Value", element, "Index ", index, )

    # ( 'Value', 'a', 'Index ', 0)

    # ( 'Value', 'b', 'Index ', 1)

    # ( 'Value', 'c', 'Index ', 2)

    # ( 'Value', 'd', 'Index ', 3)

    22 执行时间

    如下代码块可以用来计算执行特定代码所花费的时间。

    importtime

    start_time = time.time

    a = 1

    b = 2

    c = a + b

    print(c)#3

    end_time = time.time

    total_time = end_time - start_time

    print( "Time: ", total_time)

    # ( 'Time: ', 1.1205673217773438e-05)

    23 Try else

    我们在使用 try/except 语句的时候也可以加一个 else 子句,如果没有触发错误的话,这个子句就会被运行。

    try:

    2* 3

    except TypeError:

    print( "An exception was raised")

    else:

    print( "Thank God, no exceptions were raised.")

    #Thank God, no exceptions were raised.

    24 元素频率

    下面的方法会根据元素频率取列表中最常见的元素。

    def most_frequent(list):

    return max(set(list), key = list.count)

    list = [ 1, 2, 1, 2, 3, 2, 1, 4, 2]

    most_frequent(list)

    25 回文序列

    以下方法会检查给定的字符串是不是回文序列,它首先会把所有字母转化为小写,并移除非英文字母符号。最后,它会对比字符串与反向字符串是否相等,相等则表示为回文序列。

    def palindrome(string):

    from re importsub

    s = sub( '[W_]', '', string.lower)

    returns == s[::- 1]

    palindrome( 'taco cat') # True

    26 不使用 if-else 的计算子

    这一段代码可以不使用条件语句就实现加减乘除、求幂操作,它通过字典这一数据结构实现:

    importoperator

    action = {

    "+": operator.add,

    "-": operator.sub,

    "/": operator.truediv,

    "*": operator.mul,

    "**": pow

    }

    print(action[ '-']( 50, 25)) # 25

    27 Shuffle

    该算法会打乱列表元素的顺序,它主要会通过 Fisher-Yates 算法对新列表进行排序:

    from copy importdeepcopy

    from random importrandint

    def shuffle(lst):

    temp_lst = deepcopy(lst)

    m = len(temp_lst)

    while(m):

    m -= 1

    i = randint( 0, m)

    temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]

    returntemp_lst

    foo = [ 1, 2, 3]

    shuffle(foo) # [ 2, 3, 1] , foo = [ 1, 2, 3]

    28 展开列表

    将列表内的所有元素,包括子列表,都展开成一个列表。

    def spread(arg):

    ret = []

    fori in arg: ifisinstance(i, list):

    ret. extend(i)

    else:

    ret. append(i)

    return ret

    spread([ 1, 2, 3,[ 4, 5, 6],[ 7], 8, 9])# [1,2,3,4,5,6,7,8,9]

    29 交换值

    不需要额外的操作就能交换两个变量的值。

    def swap(a, b):

    return b, a

    a, b = - 1, 14

    swap(a, b) # ( 14, - 1)

    spread([ 1, 2, 3,[ 4, 5, 6],[ 7], 8, 9]) # [ 1, 2, 3, 4, 5, 6, 7, 8, 9]

    30 字典默认值

    通过 Key 取对应的 Value 值,可以通过以下方式设置默认值。如果 get 方法没有设置默认值,那么如果遇到不存在的 Key,则会返回 None。

    d = { 'a': 1, 'b': 2}

    print(d.get( 'c', 3)) # 3

    责任编辑:

    展开全文
  • 原标题:GitHub上7000+ Star的Python常用代码合集 作者 | 二胖并不胖来源| 大数据前沿(ID:bigdataqianyan)今天二胖给大家介绍一个由一个国外小哥用好几年时间维护的Python代码合集。简单来说就是,这个程序员小哥在...

    原标题:GitHub上7000+ Star的Python常用代码合集

    作者 | 二胖并不胖

    来源| 大数据前沿(ID:bigdataqianyan)

    今天二胖给大家介绍一个由一个国外小哥用好几年时间维护的Python代码合集。简单来说就是,这个程序员小哥在几年前开始保存自己写过的Python代码,同时把一些自己比较常用的代码作为一个个小脚本保存在一起,然后维护在github上。

    我又看了一下,目前小哥的这个项目已经有7000多人关注啦。无论你是Python初学者还是已经学习过一段时间Python,这个代码合集都值得你去参考,为什么呢?我们一一道来。

    首先,这个代码库中的脚本示例特别多,我大致看了一下,应该已经有超过100个独立的脚本了。当然,数量多不那么重要,重要的是代码的种类多。

    有爬虫,有异步下载,有Python小游戏,有图片处理,有谷歌新闻下载器,有数学处理 ... 总之种类很多就对啦!

    为什么要强调种类呢?

    因为在学习写代码的过程中,我们应该尽量避免重复。写代码不像背单词,你只要知道一门编程语言能干什么,等到要用的时候,能迅速找到那段实现相应功能的代码就好,不会要求我们把代码背下来。所以我们可以在一段时间内不停尝试学习一些新的东西。

    小哥代码库中的这些小例子不仅功能种类丰富,同时也用到了很多Python的语法和数据结构,对初学者有较大帮助。

    除了种类多,代码库中每个项目的代码还足够短!

    虽然在学习的过程中,我们推崇在项目中学习。可是很多初学者不免陷入尴尬的境地...

    看项目吧... 我连怎么运行一个项目都不知道。不看项目吧... 天天看书,看完就忘,到头来啥也没学会。

    那怎么办?

    从读书学习到能上手做一个项目,如了解一些框架(Django、Scrapy)是需要时间的。那么在你还没有能力去使用或看懂一个由成千上万行代码构成的项目的时候,看一些小代码是很有帮助的。

    这些代码合集就是一个不错的选择,因为它很短,多数脚本都在50行到100行之间,最长的脚本也就300多行,并且每个脚本都完整的实现了一个小功能。

    每搞懂一个小脚本,你的成就感就会 +1 。在上手大中型项目之前,不妨先来学习一下这些小脚本。

    每个程序员都应该拥有一个自己的常用代码库。

    从开始写脚本起,我都会把自己常用的代码收集起来,如Python脚本、Shell脚本。

    为什么呢?

    因为太多时候,我们做的事情都是重复的,比如我常常会写脚本去遍历一个文件夹下的所有文件,常常会用到正则表达式,常常要使用一些第三方库。

    虽说,我们“提倡”面向搜索引擎编程——要用的时候查一下,但是每次都查还真的挺费时间。最重要的是,每次查出来的解决方案可能不一样,还需要花时间去看 ... 效率太低啦。

    所以,我们应该养成一个好习惯,把自己常用的“工具类”脚本收集起来。无论是记录在云笔记还是把代码上传到github,我们一定要刻意去收集。慢慢的,你就会发现自己的代码写得越来越快 ... 俗称CV大法。

    我个人两种方式都使用,有道云笔记和github都是我认为比较方便和实用的,大家也可以试一试。

    那个小哥的Python常用代码库的地址还没告诉各位,在这里:

    https://github.com/geekcomputers/Python

    (本文为 AI科技大本营转载文章,转载请联系原作者)

    在线分享会

    3月21日晚8点

    近年来,聊天机器人技术及产品得到了快速的发展,本课程将全面阐述聊天机器人的技术框架及工程实现细节,并对于聊天机器人的下一代范式:虚拟生命,进行了详细的剖析,同时,聚焦知识图谱在实现认知智能过程中的重要作用,给出了知识图谱的落地实践。

    责任编辑:

    展开全文
  • 点击上方“蓝字”,发现更多精彩。作者丨Fatos Morina来源丨Python 技术导读本文是 30 个极简任务,初学者可以尝试着自己实现;本文同样也是 30 段代码Python 开...

    点击上方“蓝字”,发现更多精彩。

    作者丨Fatos Morina

    来源丨Python 技术

    导读

     

    本文是 30 个极简任务,初学者可以尝试着自己实现;本文同样也是 30 段代码,Python 开发者也可以看看是不是有没想到的用法。

    本文是 30 个极简编程任务,Python初学者可以尝试着自己实现;

    1 重复元素判定

    以下方法可以检查给定列表是不是存在重复元素,它会使用 set() 函数来移除所有重复元素。

    def all_unique(lst):    return len(lst)== len(set(lst))x = [1,1,2,2,3,2,3,4,5,6]y = [1,2,3,4,5]all_unique(x) # Falseall_unique(y) # True
    
    

    2 字符元素组成判定

    检查两个字符串的组成元素是不是一样的。

    from collections import Counterdef anagram(first, second):    return Counter(first) == Counter(second)anagram("abcd3", "3acdb") # True
    

    3 字典默认值

    通过 Key 取对应的 Value 值,可以通过以下方式设置默认值。如果 get() 方法没有设置默认值,那么如果遇到不存在的 Key,则会返回 None。

    d = {'a': 1, 'b': 2}print(d.get('c', 3)) # 3
    

    4 字节占用

    下面的代码块可以检查字符串占用的字节数。

    def byte_size(string):return(len(string.encode('utf-8')))byte_size('') # 4byte_size('Hello World') # 11
    

    6 大写第一个字母

    以下代码块会使用 title() 方法,从而大写字符串中每一个单词的首字母。

    s = "programming is awesome"print(s.title())# Programming Is Awesome
    

    7 分块

    给定具体的大小,定义一个函数以按照这个大小切割列表。

    from math import ceildef chunk(lst, size):    return list(map(lambda x: lst[x * size:x * size + size],list(range(0, ceil(len(lst) / size)))))chunk([1,2,3,4,5],2)# [[1,2],[3,4],5]
    

    8 压缩

    这个方法可以将布尔型的值去掉,例如(False,None,0,“”),它使用 filter() 函数。

    def compact(lst):    return list(filter(bool, lst))compact([0, 1, False, 2, '', 3, 'a', 's', 34])# [ 1, 2, 3, 'a', 's', 34 ]
    

    9 解包

    如下代码段可以将打包好的成对列表解开成两组不同的元组。

    array = [['a', 'b'], ['c', 'd'], ['e', 'f']]transposed = zip(*array)print(transposed)# [('a', 'c', 'e'), ('b', 'd', 'f')]
    

    11 逗号连接

    下面的代码可以将列表连接成单个字符串,且每一个元素间的分隔方式设置为了逗号。

    hobbies = ["basketball", "football", "swimming"]
    print("My hobbies are: " + ", ".join(hobbies))
    # My hobbies are: basketball, football, swimming
    

    12 元音统计

    以下方法将统计字符串中的元音 (‘a’, ‘e’, ‘i’, ‘o’, ‘u’) 的个数,它是通过正则表达式做的。

    import redef count_vowels(str):    return len(len(re.findall(r'[aeiou]', str, re.IGNORECASE)))count_vowels('foobar') # 3count_vowels('gym') # 0
    
    

    13 首字母小写

    如下方法将令给定字符串的第一个字符统一为小写。

    def decapitalize(string):    return str[:1].lower() + str[1:]decapitalize('FooBar') # 'fooBar'decapitalize('FooBar') # 'fooBar'
    

    14 展开列表

    该方法将通过递归的方式将列表的嵌套展开为单个列表。

    def spread(arg):    ret = []    for i in arg:      if isinstance(i, list):          ret.extend(i)      else:          ret.append(i)      return retdef deep_flatten(lst):    result = []    result.extend(    spread(list(map(lambda x: deep_flatten(x) if type(x) == list else x, lst))))    return resultdeep_flatten([1, [2], [[3], 4], 5]) # [1,2,3,4,5]
    
    

    15 列表的差

    该方法将返回第一个列表的元素,其不在第二个列表内。如果同时要反馈第二个列表独有的元素,还需要加一句 set_b.difference(set_a)。

    def difference(a, b):    set_a = set(a)    set_b = set(b)    comparison = set_a.difference(set_b)    return list(comparison)difference([1,2,3], [1,2,4]) # [3]
    

    16 元素频率

    下面的方法会根据元素频率取列表中最常见的元素。

    def most_frequent(list):    return max(set(list), key = list.count)list = [1,2,1,2,3,2,1,4,2]most_frequent(list)
    

    17 Try else

    我们在使用 try/except 语句的时候也可以加一个 else 子句,如果没有触发错误的话,这个子句就会被运行。

    try:    2*3except TypeError:    print("An exception was raised")else:    print("Thank God, no exceptions were raised.")#Thank God, no exceptions were raised.
    

    18 合并两个字典

    下面的方法将用于合并两个字典。

    def merge_two_dicts(a, b):    c = a.copy() # make a copy of a     c.update(b) # modify keys and values of a with the once from b    return ca={'x':1,'y':2}b={'y':3,'z':4}print(merge_two_dicts(a,b))#{'y':3,'x':1,'z':4}
    

    在 Python 3.5 或更高版本中,我们也可以用以下方式合并字典:

    def merge_dictionaries(a, b)    return {**a, **b}a = { 'x': 1, 'y': 2}b = { 'y': 3, 'z': 4}print(merge_dictionaries(a, b))# {'y': 3, 'x': 1, 'z': 4}
    

    19 将两个列表转化为字典

    如下方法将会把两个列表转化为单个字典。

    def to_dictionary(keys, values):    return dict(zip(keys, values))keys = ["a", "b", "c"]values = [2, 3, 4]print(to_dictionary(keys, values))#{'a': 2, 'c': 4, 'b': 3}
    


    
    往期推荐
    
    1、如何用数据找到下一家独角兽?2、数说第七次人口普查的结果,对于我们普通人有哪些重要的影响3、数据分析来诠释"985/211废物"的焦虑与失意
    
    
    
    展开全文
  • python常用函数详解

    2021-01-13 05:58:39
    因为在平时写代码时,如果没有函数的话,那么将会出现很多重复的代码,这样代码重用率就比较低。。。并且这样的代码维护起来也是很有难度的,为了解决这些问题,就出现了函数,用来将一些经常出现的代码进行封装,...

    1.函数的介绍

    为什么要有函数?因为在平时写代码时,如果没有函数的话,那么将会出现很多重复的代码,这样代码重用率就比较低。。。并且这样的代码维护起来也是很有难度的,为了解决这些问题,就出现了函数,用来将一些经常出现的代码进行封装,这样就可以在任何需要调用这段代码的地方调用这个函数就行了。

    函数的定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可

    特性:

    代码重用

    保持一致性

    可扩展性

    2.函数的创建

    在python中函数定义的格式如下:

    函数的调用使用 函数名(实参) 就可以调用函数了。

    函数名的命名规则和变量的命名规则一样:

    函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;

    函数名是区分大小写的。

    函数名不能是保留字。

    形参和实参的区别:

    函数在定义的时候,函数名后面的括号中可以添加参数,这些参数就叫做形参,形参:顾名思义就是形式参数,只是一个代号。

    实参是在调用函数的时候函数名后面的括号中的参数,形参和实参需要一一对应起来,否则调用函数会报错。

    3.函数参数及返回值

    前面提到函数的形参和实参要一一对应,那么参数对应有如下几种:

    必须参数

    关键字参数

    默认参数

    不定长参数 *args

    不定长参数 **kwargs

    1.必须参数:

    必须参数必须以对应的关系一个一个传递进入函数,函数调用时传递的实参必须和函数定义时的形参一一对应,不能多也不能少,顺序也得一致。

    举个栗子:

    2.关键字参数

    关键字参数是实参里面的概念,在调用函数的时候声明某个参数是属于某个关键字的。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

    举个栗子:

    3.默认参数

    默认参数是在函数声明的时候,可以给某个参数指定默认值,这样的参数叫做默认值参数。如果在调用函数的时候,默认参数没有接收到对应的实参,那么就会将默认值赋值给这个参数。

    举个栗子:

    这样,就会把默认参数male赋值给sex了。

    4.不定长参数 *args

    在python里面,函数在声明的时候,参数中可以使用(*变量名)的方式来接受不确定长度的参数,但是在python里面大家约定俗成使用*args接受不定长参数,这样在调用函数的时候传递的参数就可以是不定长度的了。args接受了不定长参数之后,将这些参数放到一个tuple里面,可以通过访问args来获取这些不定长参数。

    举个栗子:

    打印出来的是一个tuple,里面存放了(“小明”,18,”male”)这三个元素。

    5.不定长参数 **kwargs

    但是上面的args只能接收未命名的参数,那假如有类似于关键字参数的不定长参数该怎么办呢?python里面使用(**变量名)来接收不定长的命名变量参数。同样,python里面也约定俗成使用**kwargs接收不定长命名参数。kwargs接收了不定长参数之后,将这些参数放到一个字典里面,可以通过key获取到相应的参数值。

    举个栗子:

    介绍完了这些参数之后,接下来要介绍的是关于这些参数混合使用的情况:

    假如一个函数使用了上面所有种类的参数,那该怎么办?为了不产生歧义,python里面规定了假如有多种参数混合的情况下,遵循如下的顺序使用规则:

    def f(必须参数,默认参数,*args,**kwargs):

    pass

    如果同时存在args和kwargs的话,args在左边

    默认参数在必须参数的右边,在*args的左边

    关键字参数的位置不固定(ps:关键字参数也不在函数定义的时候确定)

    那么,假如有一个列表想要传递进入一个不定长的未命名参数的函数中去,可以在该列表前面加上*实现,同理如果想传递一个字典进入不定长命名参数的函数中去,可以在该字典前面加上**

    举个栗子:

    函数的返回值

    要想获取函数的执行结果,就可以用return语句把结果返回

    注意:

    函数在执行过程中只要遇到return语句,就会停止执行并返回结果,也可以理解为 return 语句代表着函数的结束 如果未在函数中指定return,那这个函数的返回值为None

    return多个对象,解释器会把这多个对象组装成一个元组作为一个一个整体结果输出。

    4.LEGB作用域

    python中的作用域分4种情况:

    L:local,局部作用域,即函数中定义的变量;

    E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;

    G:globa,全局变量,就是模块级别定义的变量;

    B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。

    local和enclosing是相对的,enclosing变量相对上层来说也是local。

    在Python中,只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如if、try、for等)不会引入新的作用域。

    变量的修改(错误修改,面试题里经常出):

    global关键字

    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了,当修改的变量是在全局作用域(global作用域)上的,就要使用global先声明一下,代码如下:

    nonlocal关键字

    global关键字声明的变量必须在全局作用域上,不能嵌套作用域上,当要修改嵌套作用域(enclosing作用域,外层非全局作用域)中的变量怎么办呢,这时就需要nonlocal关键字了

    小结

    变量查找顺序:LEGB,作用域局部>外层作用域>当前模块中的全局>python内置作用域;

    只有模块、类、及函数才能引入新作用域;

    对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量;

    内部作用域要修改外部作用域变量的值时,全局变量要使用global关键字,嵌套作用域变量要使用nonlocal关键字。nonlocal是python3新增的关键字,有了这个 关键字,就能完美的实现闭包了。

    5.特殊函数

    递归函数定义:递归函数就是在函数内部调用自己

    有时候解决某些问题的时候,逻辑比较复杂,这时候可以考虑使用递归,因为使用递归函数的话,逻辑比较清晰,可以解决一些比较复杂的问题。但是递归函数存在一个问题就是假如递归调用自己的次数比较多的话,将会使得计算速度变得很慢,而且在python中默认的递归调用深度是1000层,超过这个层数将会导致“爆栈”。。。所以,在可以不用递归的时候建议尽量不要使用递归。

    举个栗子:

    递归函数的优点:定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

    递归特性:

    必须有一个明确的结束条件

    每次进入更深一层递归时,问题规模相比上次递归都应有所减少

    递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返 回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。)

    6.函数式编程

    关于函数式编程,我理解的也不是很深,但是python中有4个比较重要的内置函数,组合起来使用有时候能大大提高编程效率。

    对sequence中的item依次执行function(item),将执行结果为True的item做成一个filter object的迭代器返回。可以看作是过滤函数。

    2 map(function, sequence)

    对sequence中的item依次执行function(item),将执行结果组成一个map object迭代器返回. map也支持多个sequence,这就要求function也支持相应数量的参数输入:

    3 reduce(function, sequence, starting_value)

    对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用.

    4 lambda

    普通函数与匿名函数的对比:

    匿名函数的命名规则,用lamdba 关键字标识,冒号(:)左侧表示函数接收的参数(a,b) ,冒号(:)右侧表示函数的返回值(a+b)。

    因为lamdba在创建时不需要命名,所以,叫匿名函数.

    展开全文
  • // Place your snippets for python here. Each snippet is defined under a snippet name and has a prefix, body and // description. The prefix is what is used to trigger the snippet and the body will ...
  • 22、十进制转二进制、八进制、十六进制 23、最大公约数 23、最小公倍数 24、简单计算器 25、生成日历 26、文件IO 27、字符串判断 28、字符串大小写转换 29、计算每个月天数 30、获取昨天的日期 来源:Python之禅 ...
  • 这次也是一鼓作气,为了我的几十个粉丝,我又吐血整理了20组python代码,赶紧码下~~~1.for循环求和sum = 0for x in list(range(10)):sum = sum + xprint(sum)2.while循环L = []n = 1while n <= 99:L.append(n)n =...
  • python 常用简单代码

    千次阅读 2021-01-19 22:44:01
    data.txt )] print(lst) 通过使用列表功能,使得代码更简单,更短 list(open( data.txt )) ##Using with will also close the file after use with open("data.txt") as f: lst=[line.strip() for line in f] print...
  • 本文同样也是 30 段代码Python 开发者也可以看看是不是有没想到的用法。、1重复元素判定以下方法可以检查给定列表是不是存在重复元素,它会使用 set() 函数来移除所有重复元素。2字符元素组成判定检查两个字符串的...
  • Python 爬虫常用代码

    2021-01-10 00:36:30
    Python 爬虫基础 web基础: Response Headers中的数据为浏览器向网站所传送的内容,包括浏览器的信息及cookies等。...爬取页面的核心代码: import urllib.request response = urllib.request.u...
  • python绘图代码总结

    千次阅读 2021-03-06 20:50:25
    经常重复使用的绘图代码使用SciencePlots画论文配图可见:传送门折线图import matplotlib.pyplot as pltimport matplotlib as mpl# 中文和负号的正常显示mpl.rcParams['font.sans-serif'] = ['Times New Roman']mpl....
  • ❝简单记录一下最简单常用的三种论文插图的python画图代码,以作备忘。❞有很多很牛b的作图教程,我也学不来,就扔给大家自己学吧:如何在论文中画出漂亮的插图?[1]折线图代码import...
  • 本文整理了一些常用的文件处理代码,基本满足日常需要,适合收藏。1、得到指定文件路径:os.path.dirname(带路径文件名)查找处理文件要调用os库,和openpyxl一样,先用import 导入。import osfile = ...
  • 下面分享25个有趣且实用的Python单行代码,欢迎大家点赞、收藏,支持! 1. 交换两个变量 a = 4 b = 5 a,b = b,a ## ???? print(a,b) #结果:5 4 2. 多变量赋值 a,b,c = 4,5.5,'Hello' ## ???? print(a,b,c) #结果...
  • 我们知道python是一门脚本语言,不像C#/Java等编译型语言可以在编译阶段就报出代码错误,脚本语言往往需要在运行期执行到这段代码时才会抛出代码错误。
  • 本文同样也是 30 段代码Python 开发者也可以看看是不是有没想到的用法。 学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则。本文是 30 个极简任务,初学者可以尝试着自己实现;本文...
  • 作者:zsx_yiyiyi编辑:python大本营本文参考自:https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python/大家好,今天分享给大家25个Matplotlib图的汇总,在数据...
  • python画线代码

    2020-12-22 14:06:51
    《树莓派Python编程指南》——第2章 Python简介2.1 使用Turtles绘画本节书摘来自华章计算机《树莓派Python...第2章 Python简介本章通过一些代码示例来逐步介绍Python。你不必了解这些代码的所有细节...文章华章计算...
  • Graphical User Interface,简称 GUI,又称图形化用户接口,所谓的GUI编程,指的是用户不需要输入代码指令,只通过图形界面的交互就可以操作软件功能。 1.Tkinter 一个轻量级的跨平台图形用户界面(GUI)开发工具,...
  • 终于懂得python入门基本代码

    千次阅读 2020-12-22 12:34:27
    以下是小编为你整理的python入门基本代码对于整数的加减乘除,但需要注意的是,整数相除的结果是小数PS:在一些其他语言,比如c语言,java,两个整数相除,如果产生小数,直接把小数给忽略掉,而Python刚刚相反,...
  • python 常用框架简介

    2021-11-16 08:57:51
    Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。 Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里...
  • ###1、三思后再写代码!!! 2、从世界上搜索喜欢你的人!!! 3、代码没写完,哪里有脸睡觉!!! 4、程序员的 Home 键!!! 5、编程是一门艺术!!! 6、云 ~~~~ 雨!!! 7、程序人生!!! 8、只有极客...
  • 小伙伴们都知道python功能强大,在金融量化分析中运用广泛,python常用的数据分析包很多,下面先给大家简单列举一些(如果您刚开始学python觉得这东西很烦看不懂,那么请不要担心,直接忽视跳到第二节吧~因为您不会...
  • DL编程常用python命令合集

    千次阅读 2021-03-06 03:45:48
    字符串计算式是无法别识别成我们常用的float型的,所以如配置文件等地读取出 来是个字符串,使用eval()可以直接将字符串进行计算得到结果。 2.需要在程序中调用执行命令 区别:可以看出,eval和exec相似度很高,都是...
  • 【判断题】The conclusion of an argument ... (10.0分)【填空题】Python使用______________格式划分语句块。【多选题】The first order of business when it comes to thinking critically about an issue is ____...
  • Python的数据结构,算法和设计模式的实现。另请参阅真棒算法。 演算法 algorithms--数据结构和算法的最小示例。 python-ds-用于采访采访的数据结构和算法的集合。 sortedcontainers-排序集合的快速和纯Python...
  • 为方便python编程,笔者将自动化代码汇集成以下autorun.py文件,需要调用时引入该文件即可。autorun.py代码如下:##本文件需要下列第三方模块:##pyautogui pyperclip urllib beautifulsoup4 openpyxlimport ...
  • Python给我们内置了大量功能函数,官方文档上列出了69个,有些是我们是平时开发中经常遇到的,也有一些函数很少被用到,这里列举被开发者使用最频繁的8个函数以及他们的详细用法 print print函数是你学Python接触到...
  • Python中退出代码

    千次阅读 2020-12-30 07:21:04
    该方法的参数作为退出代码返回到环境。脚本从来不会调用exit方法,0是默认的退出代码。从sys.exit的文档 :可选参数arg可以是一个给出退出状态(默认为零)的整数或其他types的对象。 如果它是一个整数,零被认为是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 351,784
精华内容 140,713
关键字:

python常用代码

python 订阅