zoukankan      html  css  js  c++  java
  • python学习笔记一基础和函数

    1.python中不存在null,true,false

    在字典中要做替换成None,True,False

    2.取字典数据时,使用网站https://www.bejson.com/jsonviewernew/,可以更清晰的看json/字典结构

    3.函数的形参、实参、位置参数

    def add(a,b):     #形参,形式参数
        print(a+b)
    
    add(2,3)          #实参,实际参数,a指向2,b指向3

    add(a=3,b=2) #明确位置指向的实际参数

    4.打开文件的函数open(),查看函数默认参数的方法:鼠标移到函数上,ctrl+鼠标左键

    5.默认参数:函数有默认参数。要把无默认参数的放前面,有默认参数的放后面,比如:add(a,b=2),不然会报错

    def add(a=2,b=3):     #给默认参数
        print(a+b)
    
    add()          #调用时,不需要传参,也可得到结果 5
    
    add(a=4,b=5)     #更新赋值

    举例:调用目录下的文件

    def data_dir(filePath='d:/data',fileName=None):
        print(filePath)
        print(fileName)
    data_dir(fileName='test.txt')     #因为函数有默认参数,所以需写清文件名的指定参数名,不然会默认把test.txt赋给filePath

    6.函数的动态参数

    用到动态参数的场景:请求参数个数不确定;请求参数的数据类型不确定(可能是元组、字典、字符串)

    #动态参数
    def f1(*args,**kwargs):
        pass
    
    #一个*代表的数据类型是元组,两个*代表的数据类型是字典。当赋值的实参不是字典,都会放到元组当中
    举例:
    def f1(*args,**kwargs):
        print(args,kwargs)

    f1([1,2,3])
    f1('a')
    f1({nam='wuya'})
    f1({dict1={
    'name':'wuya'})
    输出结果:
    ([1,2,3],){}
    (‘a’,){}
    (){'name':'wuya'}
    (){'dict1':{'name':'wuya'}}

    举例:需求:

    1.对请求参数进行ascill排序(sorted函数)

    2.排序后,对请求参数进行md5加密

    实现:1.排序

    def data(**kwargs):
        return dict(sorted(kwargs.items(),key=lambda item:item[0]))
    
    dict1={'name':'wuya','age':18,'address':'xian','work':'tester'}
    print(data(**dict1))

    2.加密

    思路:写一个函数,获取请求参数,对请求参数进行加密。

    对密码进行加密登录:

    import requests
    import hashlib
    
    def MD5_login(str):    
        zt_pwd = hashlib.md5()  
        zt_pwd.update(str.encode(encoding='utf-8'))
        return zt_pwd.hexdigest()
    
    password = '123456' #登陆的用户密码=='123456'
    url = 'http://192.168.1.105:81/zentao/user-login-L3plbnRhby8=.html'
    data = {'account':'admin','password':MD5_login(password),'referer':'/zentao/'}
    response = requests.post(url,data=data) # 发送post请求
    print(response.content.decode('utf-8'))

    7.函数返回值

    • 每一个函数都有返回值(针对使用print()的函数,返回值就是None
    • return后面的内容就是函数的返回值

    什么样的情况下使用函数返回值:获取token、session、cookie;查看提交的订单编号等情况

    获取token的思路:发送登录请求,拿到返回结果,取到token值;下次访问其他界面时把token带进去

     1 def login():
     2     username=input('请输入登录账号:
    ')
     3     password=input('请输入登录密码:
    ')
     4     if username=='wuya' and password=='123456'
     5         return 'hdklfhkdfu4343'
     6 
     7 def profile(token):
     8     if token==login():
     9         print('欢迎访问无涯的首页')
    10     else:
    11         print('未登录,跳转到登录的页面,302')
    12 
    13 profile('hdklfhkdfu4343')

    8.函数作用域

    •  全局作用域:针对全局变量
    • 局部作用域:针对局部变量
    1 #代码执行顺序是从上往下的,当函数名相同时,调用距离最近的函数
    2 name='无涯'                #全局变量
    3 def f():
    4     name='无涯课堂'        #局部变量
    5     print(name)
    6 f()
    #输出结果:
    无涯课堂
    name='无涯'              
    def f():
        print(name)
    f()
    #输出结果:
    无涯

    引进全局变量,并更新:

    name='无涯'
    def f():
        global name
        name='无涯课堂'
        print(name)
    f()
    #输出结果:
    无涯课堂

    函数执行顺序:

    def f():
        name='我是父函数的值'
        def f1():
            name='我是子函数的值'
            print(name)
        return f1()
    
    f()
    
    #函数执行顺序
    1.执行def f(),找到name=父函数的值
    2.执行 return f1()
    3.找到f1函数里面的name变量,输出了name是值
    4.输出:我是子函数的值

    9.内部函数:(比如max()、min()、type()等)

    • 不修改全局变量可以访问全局变量
    • 修改同名全局变量,则python会认为它是一个局部变量
    • 在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError

    10.三目运算:

    1.一是通过if语句实现的,语法如下:

    <true statement> if <condition expression> else <false statement>

    首先对条件表达式<condition expression>求值,如果值为True,则执行<true statement>,否则执行<false statement>

    x=1
    y=3
    z= x-y if x>y else x+y
    print(z)

    2.是通过and、or来实现,此方式利用的是逻辑运算符的短路原则来实现的。语法如下:

    <condition expression> and <true statement> or <false statement>
    x=1
    y=3
    z= x>y and x-y or x+y
    print(z)

    11.lambda匿名函数语法:(冒号前是参数,冒号后是判断及表达式)

    lambda parameters:express

    parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数

    expression:不能包含分支或循环(但允许条件表达式),也不能包含return(或yield)函数。如果为元组,则应用圆括号将其包含起来。

    调用lambda函数,返回的结果是对表达式计算产生的结果

    根据参数是否为1 决定s为yes还是no
    >>> s = lambda x:"yes" if x==1 else "no"
    >>> s(0)
    'no'
    >>> s(1)
    'yes'

    上面例子中,将if...else语句缩减为单一的条件表达式,语法为:

                   expression1 if A else expression2

    如果A为True,条件表达式的结果为expression1,否则为expression2 

    login=lambda username,password:print('登录成功')if username=='wuya' and password=='123456' else print('登录失败')

    print(login('wuya','123456'))

    #输出:
    登录成功
    data=lambda **kwargs:dict(sorted(kwargs.items(),key=lambda item:item[0]))
    
    print(data('name':'wuya','age':18,'address':'xian','work':'tester'))

    sorted(d.items(), key=lambda x: x[1]) 中 d.items() 为待排序的对象(即kwargs);key=lambda x: x[1] 为对前面的对象中的第二维数据(即value)的值进行排序(即对第一个item进行排序)。

    key=lambda 变量:变量[维数] 。维数可以按照自己的需要进行设置。

    12.map函数

    功能:遍历序列,对序列中每个元素进行操作,最终获取新的序列。

    map(function, iterable, ...)

    • function -- 函数
    • iterable -- 一个或多个序列,可迭代的,可以for循环的
    • 将函数返回值添加到结果中
    i = [11, 22, 33, 44, 55]
    def f2(a):
        return a + 100
      
    result = map(f2, li)                  #输出[111,122,133,144,155]
    result = map(lambda a: a + 200, li)   #输出[211,222,233,244,255]
    print(list(result))

    应用场景:

    1、每个元素增加100

    2、两个列表对应元素相加

    注意:map()函数不改变原有的list,而是返回一个新的list

    利用map()函数,可以把一个list 转换为另一个list,只需要传入转换函数。
    由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的list,事实上它可以处理包含任意类型的list,只要传入的函数f可以处理这种数据类型。
    list1= [11, 22, 33, 44, 55]
    print(list(map(lambda a:a+100,list1)))

    13.filter函数

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

    语法:

    filter(function, iterable)
    list1=[-1,1,2,3,4,5]
    def f():
        list2=[]
        for i in list1:
            if i>1:                   #过滤掉小于1的数
                list2.append(i)       #把大于1的数追加到list2里面
        print(list2)  
    用filter函数实现:
    list1=[-1,1,2,3,4,5]
    
    print(list(filter(lambda a:a>1,list1)))
  • 相关阅读:
    【最强】微软Tech Summit 2017动手实验室教程
    【心得体会】我考完MOS我明白了…
    惊喜哈哈哈
    89C51单片机的学习
    cookie和session
    Ajax
    ORM创建多表以及多表的增删改查
    orm单表查询和模糊查询
    django的ORM
    django的视图函数
  • 原文地址:https://www.cnblogs.com/dydxw/p/14203570.html
Copyright © 2011-2022 走看看