zoukankan      html  css  js  c++  java
  • Python基础篇【第六篇】:函数补充

    三元运算

    三元运算(三目运算),是简单的条件的语句缩写。

    Python没有三目运算符但是可以用if else语句实现相同的功能:

    #!/usr/bin/env python3
    
    #三元运算格式
    #result = 值1 if 条件 else 值2
    #如果条件成立,那么值1赋值给变量result,否则将值2赋给result变量
    
    #实例:
    result = True if 1 > 0 else False
    print(result)
    
    #运行结果
    True

    lambda表达式

    通过三元运算可以很快完成简单的if else 语句:

    #普通if else语句
    if 1 == 1:
        name = 'wuSri_神人'
    else:
        name = 'alex_逗逼'
    print(name)
    
    #三元运算:
    name = 'wuSri_神人' if 1 == 1 else 'alex_逗逼'
    print(name)
    执行结果:

     /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/boke.py
     wuSri_神人
     wuSri_神人

     Process finished with exit code 0

    简单的函数也可以用简单的表达式(lambda表达式):

     1 #普通函数
     2 def func(arg):
     3     return arg + 1
     4 
     5 result = func(123)
     6 print(result)
     7 
     8 #用lambda表达式
     9 sum_lambda = lambda arg : arg + 1
    10 
    11 result = sum_lambda(123)
    12 print(result)
    13 执行结果:
    14 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/boke.py
    15 124
    16 124
    17 
    18 Process finished with exit code 0

    函数的参数

    函数有三种不同的参数:普通参数、默认参数、动态参数。

    三种参数实例介绍与使用:

     1 #定义函数
     2 
     3 #普通参数,数量一一对应
     4 def func1(name):     #name叫做函数func的形式参数,简称形参
     5     print("func1",name)
     6 
     7 func1('wuSir')       #执行函数,'wuSir叫函数func的实际参数,简称实参
     8 
     9 
    10 #默认参数,一定要把参数放到尾部
    11 def func2(name,age = 88):       #默认函数age = 88
    12     print("func2 " "%s:%s" %(name,age))
    13 
    14 func2('wuSir',98)               #执行函数,指定函数让age = 98
    15 func2('alex')                   #执行函数,使用默认参数
    16 
    17 #动态参数,*args有多少参数接受多少参数,用tuple表示
    18 def func3(*args):
    19     print("func3",args)
    20 
    21 func3(11,22,33,44,55)           #执行函数,传入实参
    22 li = [1,2,3,4,5]                #定义一个列表
    23 func3(*li)                      #把列表传入到函数并执行
    24 
    25 #动态参数,**kwargs有多少参数接收多少参数,用字典表示
    26 def func4(**kwargs):
    27     print("func4",kwargs)
    28 
    29 
    30 func4(name = 'wuSir',age = 18)      #执行函数,传入实参
    31 li = {'name':'wuSir','age':18,'gender':'male'}      #定义一个字典
    32 func4(**li)                         #把字典传入到函数并执行
    33 
    34 #动态参数,**args/**kwargs表示即接收元组的形式又接收字典的方式,全能的~
    35 def func5(*args,**kwargs):
    36     print("func5_args",args)
    37     print("func5_kwargs",kwargs)
    38 
    39 func5(1,2,3,4,5,name = "wuSir",age = 18,gender = 'male')

    以上代码执行结果:

     1 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/boke.py
     2 func1 wuSir
     3 func2 wuSir:98
     4 func2 alex:88
     5 func3 (11, 22, 33, 44, 55)
     6 func3 (1, 2, 3, 4, 5)
     7 func4 {'name': 'wuSir', 'age': 18}
     8 func4 {'age': 18, 'name': 'wuSir', 'gender': 'male'}
     9 func5_args (1, 2, 3, 4, 5)
    10 func5_kwargs {'gender': 'male', 'name': 'wuSir', 'age': 18}
    11 
    12 Process finished with exit code 0

     内置函数

    1、求绝对值:abs()

    1 #绝对值
    2 i = abs(-123)
    3 print(i)
    4 #运行结果
    5 123

    2、all,循环参数,如果每个元素都为真,那么all的返回值就为真

    1 r = all([True,True,False])
    2 print(r)
    3 #执行结果
    4 False
    5 r = all([True,True,True])
    6 print(r)
    7 #执行结果
    8 True

    #假,0,None,'',[],(),{}, =====> 0,None,空值

    3、any只要有一个为真就为真。

    1 i = any([None,'',[],{},(),1])
    2 print(i)
    3 #执行结果
    4 True

    4、ascii,在对象的类中找__repr__方法,获取它的返回值。

    1 class Foo:
    2     def __repr__(self):
    3         return "hello"
    4 obj = Foo()
    5 r = ascii(obj)
    6 print(r)
    7 #执行结果
    8 hello

    5、bin(),二进制

    1 r = bin(11)
    2 print(r)
    3 #执行结果
    4 0b1011

    6、oct(),八进制

    1 r = oct(8)
    2 print(r)
    3 #执行结果
    4 0o10

    7、int(),十进制

    1 i = int(10)
    2 print(i)
    3 #执行结果
    4 10

    8、hex(),十六进制

    1 r = hex(14)
    2 print(r)
    3 #执行结果
    4 0xe

    9、进制之间转换

     1 int(10)
     2 i = int('0b11',base=2)      #二进制转换十进制
     3 print("2转10",i)
     4 
     5 i = int('11',base=8)        #八进制转换十进制
     6 print("8转10",i)
     7 
     8 i = int('0xe',base=16)      #十六进制转换十进制
     9 print("16转10",i)
    10 
    11 #执行结果
    12 
    13 2转10 3
    14 8转10 9
    15 16转10 14

    10、bytes  字节

    1 #bytes('xxxx',encoding='utf-8')
    2 byt = bytes('hello',encoding='utf-8')
    3 
    4 #运行结果
    5 
    6 <class 'bytes'> b'hello'

    11、chr()数字转换成字符串

    1 #只适用于ascill码
    2 c = chr(66)
    3 print(c)
    4 
    5 #执行结果
    6 
    7 B

    12、ord()字符串转换成数字

    1 #只适用于ascill码
    2 i = ord('i')
    3 print(i)
    4 
    5 #执行结果
    6 
    7 105

    13、根据chr(),ord()内置函数写一个验证码的实例:

     1 #----------验证码------------
     2 #生成一个随机数
     3 #数字转换成字母:chr()
     4 import random        
     5 
     6 temp = ""                                       #定义一个空的字符串等待结果传入
     7 
     8 for i in range(6):
     9     num = random.randrange(0,4)                 #生成0-4的随机数
    10     if num == 3 or num == 1:
    11         rad2 = random.randrange(0,10)           #如果随机数是1或3,那么就在验证码中生成一个0-9的随机数
    12         temp = temp + str(rad2)
    13     else:
    14         rad1 = random.randrange(65,91)          #否则,验证码中生成了一个随机数
    15         c1 = chr(rad1)
    16         temp = temp +c1
    17 print(temp)
    18 
    19 #执行结果
    20 
    21 BR677D                #结果是随机的    

    14、callable判断是不是可以执行可执行返回结果为True,否则Flase

     1 def f1():
     2     return 123
     3 
     4 f1()
     5 r = callable(f1)
     6 print(r)
     7 
     8 #执行结果
     9 
    10 True

    15、divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数,返回结果类型为tuple

    1 a = 10/3
    2 print("一般",a)
    3 r = divmod(10,3)
    4 print("divmod",r)
    5 
    6 #执行结果
    7 
    8 一般 3.3333333333333335
    9 divmod (3, 1)

    16、eval可以执行以字符串形式的表达式

     1 #一般表达形式
     2 a = 1 + 3
     3 print(a)
     4 
     5 a = "1 + 3"
     6 print(a)
     7 
     8 #eval
     9 a = eval("1 + 3")
    10 print(a)
    11 
    12 #执行结果
    13 
    14 4
    15 1 + 3
    16 4

    17、exec语句用来执行储存在字符串或者文件中的python语句。可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句。

     1 >>>exec 'print "hello word"'
     2 hello world
     3 
     4 exec("for i in range(10):print(i)")
     5 
     6 #执行结果
     7 
     8 hello word
     9 
    10 0
    11 1
    12 2
    13 3
    14 4
    15 5
    16 6
    17 7
    18 8
    19 9

    18、filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。最终一次性返回过滤后的结果。

    filter()函数的参数:

    第一个,自定函数名,必须的
    第二个,需要过滤的列,也是必须的

     1 #一般函数表达形式
     2 
     3 def f1(x):
     4     if x > 22:
     5         return True
     6     else:
     7         return False
     8     return True
     9 ret = filter(f1,[11,22,33,44])
    10 for i in ret:
    11     print(i)
    12 
    13 #执行结果
    14 
    15 33
    16 44
    17 
    18 #lambda表达式
    19 # ret = filter(lambda x : x > 22,[11,22,33,44])
    20 for i in ret:
    21     print(i)
    22 
    23 #执行结果
    24 
    25 33
    26 44

    19、map(函数,可迭代的对象),map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

     1 #一般表达形式
     2 def f1(x):
     3     return x + 100
     4 
     5 ret = map(f1, [1,2,3,4,5,])
     6 print(ret)
     7 for i in ret:
     8     print(i)
     9 
    10 #执行结果
    11 
    12 <map object at 0x101376780>
    13 101
    14 102
    15 103
    16 104
    17 105
    18 
    19 #lambda表达形式
    20 ret = map(lambda x:x + 100,[1,2,3,4,5])
    21 print(ret)
    22 for i in ret:
    23     print(i)
    24 
    25 #执行结果
    26 
    27 <map object at 0x101376780>
    28 101
    29 102
    30 103
    31 104
    32 105

    20、获取当前代码里的所有全局变量globals

    1 a = 1
    2 b = 2
    3 
    4 #运行结果
    5 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/s1.py
    6 {'__doc__': None, '__spec__': None, '__file__': '/Users/zk/PycharmProjects/old_boy/day05/s1.py', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x1007a5cf8>, '__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', 'b': 2, 'a': 1, '__cached__': None, '__package__': None}
    7 
    8 Process finished with exit code 0

    *globals 返回实际的全局名字空间,而不是一个拷贝(麻蛋有待了解)

    21、获取当前代码里的所有局部变量locals

     1 def foo(arg,a):
     2     x = 1
     3     y = "xxxxxxx"
     4     for i in range(10):
     5         j = 1
     6         k = i
     7     print(locals())
     8 foo(1,2)
     9 
    10 #执行结果
    11 
    12 {'j': 1, 'x': 1, 'k': 9, 'arg': 1, 'a': 2, 'i': 9, 'y': 'xxxxxxx'}
    13 
    14 #locals 是一个返回 dictionary 的函数, 并且在 dictionary 中设置一个值。

    22、hash

    #hash值
    dic = {"sadfasdfasdfasdfasdfasdf":1}
    i = hash("sadfasdfasdfasdfasdfasdf")        #把一般字符串转成hash值
    print(i)

    23、isinstance()判断某个对象是否是某一个类创建的,如果是返回True,否则False

     1 li = [11,22]
     2 r = isinstance(li,int)
     3 print(r)
     4 
     5 #执行结果
     6 
     7 False
     8 
     9 r = isinstance(li,list)
    10 print(r)
    11 
    12 #执行结果
    13 
    14 True

    24、issubclass(),本函数用来判断类参数class是否是类型参数classinfo的子类

     1 class Line:
     2     pass
     3 
     4 class RedLine(Line):
     5     pass
     6 
     7 class Rect:
     8     pass
     9 
    10 print(issubclass(RedLine,Line))
    11 print(issubclass(Rect,Line))
    12 
    13 #执行结果
    14 
    15 True
    16 False

    25、iter迭代器,创建一个可以被迭代的东西

    1 obj = iter([11,22,33,44])
    2 
    3 r1 = next(obj)
    4 print(r1)
    5 
    6 #执行结果
    7 
    8 11

    26、max()取最大值

    1 li = [11,22,33,44]
    2 r = max(li)
    3 print(r)
    4 
    5 #执行结果
    6 
    7 44

    27、main()取最小值

    1 li = [11,22,33,44]
    2 r2 = min(li)
    3 print(r2)
    4 
    5 #执行结果
    6 
    7 11

    28、pow()指数

    1 i = pow(2,100)
    2 print(i)
    3 
    4 #执行结果
    5 
    6 1267650600228229401496703205376

    29、round四舍五入

    1 r = round(3.6)
    2 print(r)
    3 
    4 #执行结果
    5 
    6 4

    30、sum求和

    1 r = sum([1,2,3,4,5])
    2 print(r)
    3 
    4 #执行结果
    5 
    6 15

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

     1 li1 = [11,22,33,44]
     2 li2 = ["a","B"]
     3 r = zip(li1,li2)
     4 for i in r:
     5     print(i)
     6 
     7 #执行结果
     8 
     9 (11, 'a')
    10 (22, 'B')

    32、sorted 函数是内建函数,他接受一个序列,返回有序的副本

     1 #------------------*排序*---------------#
     2 li = [1,34,41,23,23,1234]
     3 print(li)
     4 li.sort()
     5 print(li)
     6 
     7 a = sorted(li)
     8 print(a)
     9 
    10 char=['',"123", "1", "25", "65","679999999999", "a","B","alex","c" ,"A", "_", "",'a钱','','',"", '',"", "", "", "钲钲㽙㽙㽙"]
    11 
    12 new_chat = sorted(char)
    13 print(new_chat)
    14 for i in new_chat:
    15     print(bytes(i, encoding='utf-8'))
    16 
    17 #执行结果
    18 
    19 /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/zk/PycharmProjects/old_boy/day05/s1.py
    20 [1, 34, 41, 23, 23, 1234]
    21 [1, 23, 23, 34, 41, 1234]
    22 [1, 23, 23, 34, 41, 1234]
    23 ['1', '123', '25', '65', '679999999999', 'A', 'B', '_', 'a', 'alex', 'a钱', 'c', '', '', '', '', '', '', '', '', '钲钲㽙㽙㽙', '']
    24 b'1'
    25 b'123'
    26 b'25'
    27 b'65'
    28 b'679999999999'
    29 b'A'
    30 b'B'
    31 b'_'
    32 b'a'
    33 b'alex'
    34 b'axe9x92xb1'
    35 b'c'
    36 b'xe1x92xb2'
    37 b'xe3xbdx99'
    38 b'xe4xbdx97'
    39 b'xe4xbdx98'
    40 b'xe4xbdx99'
    41 b'xe5xadx99'
    42 b'xe6x9dx8e'
    43 b'xe8xb5xb5'
    44 b'xe9x92xb2xe9x92xb2xe3xbdx99xe3xbdx99xe3xbdx99'
    45 b'xe9x93xb1'
    46 
    47 Process finished with exit code 0
    48 
    49 #结果都是通过二级制表示大小进行重新排序的!
  • 相关阅读:
    80X86常用汇编指令集(不断补充完善中)
    重温大师经典:Martin Fowler 的持续集成
    .NET Framework 将有限地向开发者公开源代码
    DotNet源代码中的模式Builder生成器模式
    Delphi内嵌汇编语言BASM精要(转帖)
    sealed关键字用法
    VS2008设置查看.NET源码的方法
    基于LINQ to SQL的WEB开发三层架构(1)
    拓扑排序
    HDU1495 非常可乐(BFS)
  • 原文地址:https://www.cnblogs.com/allan-king/p/5477235.html
Copyright © 2011-2022 走看看