zoukankan      html  css  js  c++  java
  • Python基础『二』

    语句,表达式

    赋值语句

    • 变量名首次使用时会被创建
    • 变量名使用前必须复制
    • 隐晦的赋值操作
      • 模块导入
      • 函数定义
      • 类定义

    赋值语句大于序列赋值

    打印语句

    print()

    分支语句

    • if语句中的判断为真值判断
    • 真值测试可以是逻辑表达式,算数运算式,in,not in等
    • 真值判定
      • 任何非零数字和非空对象为True
      • 数字零,空对象,None为False
    • 三元操作符
      • A=Y if < test > else x
      • y,x,< test >结构较简单是采用三元表达式
      • 否则推荐使用完整条件语句

    循环语句

    WHILE条件循环

    while <test>:
    	if ...
    else:
    	...
    

    FOR迭代循环

    for <target> in <object>:
    	if ...
    else:
    	...
    

    关键字

    • break: 跳出当前循环
    • continue: 跳过continue之后的语句到当前循环起始处
    • pass: 占位语句
    • else: 循环正常结束执行else语句块,break会跳过else块

    break只能跳出一层循环,return则会直接跳出整个循环

    内置方法

    • range()
      • range(start,end)
      • range(end)
      • range(start,end,step)
    • reversed()
      • 逆序访问序列
      • 返回一个迭代器
    • enumerate()
      • 同时获取元素的内容和偏移

    函数

    函数的作用

    • 最大化代码复用
    • 最小化代码冗余
    • 对逻辑流程进行分解
    • 面向对象过程程序设计的基本单元

    函数的三要素

    • 函数名
    • 参数列表
    • 返回值

    函数定义

    def <name>([arg1])
    	<statements>
    	[return [val]]
    

    DEF语句

    • def是可执行的python语句
    • def执行之后函数对象才被创建
    • def可以出现在程序的任何位置
    • 本质是将函数对象赋值给函数名
    • 空函数

    RETURN语句

    • 返回一个对象给调用者
    • return之后的语句全部忽略
    • 返回值形式

    函数调用

    def add(a,b):
    	s = a + b
        return s
        
    result = add
    add(1,2)
    result(1,2)
    

    作用域

    作用域就是一个 Python 程序可以直接访问命名空间的正文区域.

    在一个 python 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到.否则会报未定义的错误。

    Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。

    变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python的作用域一共有4种,分别有四种作用域:

    • L(Local):最内层,包含局部变量,比如一个函数/方法内部.
    • E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量.比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal.
    • G(Global):当前脚本的最外层,比如当前模块的全局变量.
    • B(Built-in): 包含了内建的变量/关键字等,最后被搜索.
    • GLOBAL: 对在模块内部的变量改变全局变量添加global参数使其变为全局变量,可以在函数内部直接使用

    闭包

    闭包指延伸了对象作用域的函数

    其中包含了在函数定义体内引用,但不在定义体定义的非全局变量

    自由变量: 指未在本地作用域中绑定的变量

    闭包会保留定义函数时存在的自由变量的绑定,这样调用函数的时候,虽然定义作用域不存在,但仍然可以使用那些自由变量的绑定

    nonlocal将变量名搜索范围限定在嵌套函数之内,闭包之外

    s1 = 'hello'
    def outer():
    	s = 'start'
    	def inner():
    		nonlocal s # ok
    		nonlocal s1 # error
    	return inner
    

    递归函数

    def factorial(n):
    	if 0==n:
    		return 1
    	else:
    		return factorial(n-1)
    factorial(10)
    # 通过在内部重复调用自己,来完成函数目标
    

    匿名函数

    使用lambda表达式构建并返回一个函数

    • lambda是一个表达式而不语句
    • lambda的主体是一个单一的表达式而不是语句块
    • 除以上两条,lambda和def做同样的工作
    • lambda一般用于给高阶函数传递参数
    foo = lambda x,y:x+y
    foo(10,20)
    

    迭代

    可迭代对象

    字符串; 列表; 元组, 字典, 集合

    判断是否可迭代的对象

    isinstance(obj,Iterable)

    生成器表达式

    生成器表达式与列表推导式类似,操作符有'[]'变为'()'

    i = (n for n in range(51))
    next(i)
    

    生成器函数

    • 在普通函数中使用yield关键字函数变为生成器函数
    • 函数每次执行到yield语句暂停运行,返回yield语句的结果
    • 被调用后返回一个可迭代对象

    迭代工具

    for: 自动迭代工具

    next(): 手动迭代工具,每次返回一个结果,迭代结束返回一个stopiteration

    迭代器对象

    迭代器对象Iterator

    iter()返回一个迭代器对象,其可以被for调用也可以被next()调用

  • 相关阅读:
    PAT 天梯赛 L1-002 【递归】
    HDU_2717_Catch That Cow
    Stock Exchange (最大上升子子串)
    Lorenzo Von Matterhorn(map的用法)
    Ignatius and the Princess IV (简单DP,排序)
    投掷硬币(概率dp)
    Find The Multiple (DFS递归)
    24 Game
    棋盘问题
    linux上的文件服务
  • 原文地址:https://www.cnblogs.com/boxness/p/11935916.html
Copyright © 2011-2022 走看看