02python入门—语句、函数参数、作用域、闭包、内置函数

控制语句

if else elif语句
while循环语句
for循环语句
	continue跳过当前循环,走下个循环
	break 终止循环
  • 在条件语句中,if 可以单独使用,但是 elif 和 else 必须和 if 同时搭配使用;而 If 条件语 句的判断,除了 boolean 类型外,其他的好显示出来。
  • 在 for 循环中,如果需要同时访问索引和元素,你可以使用 enumerate() 函数来简化代 码。
  • 写条件与循环时,合理利用 continue 或者 break 来避免复杂的嵌套,是十分重要的。
    要注意条件与循环的复用,简单功能往往可以用一行直接完成,极大地提高代码质量与效 率。
l = [1, 2, 3, 4, 5, 6, 7] for index, item in enumerate(l):
	if index < 5:
		print(item)   

异常捕捉

  • 异常,通常是指程序运行的过程中遇到了错误,终止并退出。我们通常使用 try except 语句去处理异常,这样程序就不会被终止,仍能继续执行。
  • 处理异常时,如果有必须执行的语句,比如文件打开后必须关闭等等,则可以放在 finally block 中。
  • 异常处理,通常用在你不确定某段代码能否成功执行,也无法轻易判断的情况下,比如数 据库的连接、读取等等。正常的 flow-control 逻辑,不要使用异常处理,直接用条件语 句解决就可以了。

推导式

列表推导式

a_list= [number for number in range(1,6)]

字典推导式

str_test = 'zz66ll'
dict_count = {i:str_test.count(i) for i in set(str_test)}

集合推导式

{i for i in range(1,6)}

函数特性

作用域

  • 全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效
  • 局部作用域:局部名称空间,只能在局部范围内生效

在局部调用:局部命名空间->全局命名空间->内置命名空间
在全局调用:全局命名空间->内置命名空间

global
想让在局部对变量做的修改在全局生效,必须提前声明为全局变量,使用global关键字

a = 10
def func():
    global a
    a = 20

print(a)
func()
print(a)

nonlocal
1.外部必须有这个变量,不是全局位置!
2.在内部函数声明nonlocal变量之前不能再出现同名变量

a = 1

def f1():
    a = 2
    def f2():
        nonlocal a
        a = 3
    f2()
    print('a in f1 : ',a)

f1()
print(a)

闭包
内部函数包含对外部作用域而非全局作用域名字的引用,该内部函数称为闭包函数

def outer():
    a = 24
    def inner():
        print(a)
    return inner
inn = outer()
inn()

参数

位置参数
def describe_pet(animal_type, pet_name)
关键字参数
describe_pet(animal_type=‘hamster’, pet_name=‘harry’)
默认值参数
def describe_pet(pet_name, animal_type=‘dog’)
任意数量参数
def make_pizza(size, *toppings)
任意数量关键字参数
def build_profile(first, last, **user_info)

arg、*args、*kwargs

三个参数位置固定,不可改变
*args 用来将参数打包成tuple给函数体调用
**kwargs 打包关键字参数成dict给函数体调用

def function(arg,*args,**kwargs):
    print(arg,args,kwargs)
function(6,7,8,9,a=1, b=2, c=3)

#输出为
6 (7,8,9) {'c':3,'b':2,'a':1}

高阶函数

把函数作为参数使用的函数,叫高阶函数

#将数字放大300倍
def funA(n):
    return n * 100
def funB(n ):
    return funA(n) * 3
print(funB(9))

# 写一个高阶函数
def funC(n, f):
    return f(n) * 3
print( funC(9, funA) )

闭包

闭包:
  内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数

def nth_power(exponent):
    def exponent_of(base):
        return base ** exponent
    return exponent_of  # 返回值是 exponent_of 函数

square = nth_power(2)  # 计算一个数的平方
cube = nth_power(3) # 计算一个数的立方
print(square) # 输出 <function __main__.nth_power.<locals>.exponent(base)>
print(cube)  # 输出 <function __main__.nth_power.<locals>.exponent(base)>
print(square(2))  # 计算 2 的平方
print(cube(2)) # 计算 2 的立方

函数返回值默认为None

内置函数

input() 输入
print() 输出
type(o) 返回变量o的数据类型
eval("print(456)")#吧字符串转换成python代码去执行(有返回值)
exec("print(7889)")#吧字符串转换成python代码去执行(无返回值)

id(o) o是参数,返回一个变量的内存地址
hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错

open() 打开一个文件,返回一个文件操作符(文件句柄)
操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+),可以用encoding指定编码.

callable(o),o是参数,看这个变量是不是可调用

dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量

数字——数据类型相关:bool,int,float,complex
数字——进制转换相关:bin,oct,hex
数字——数学运算:abs,divmod返回余,min,max,sum,round小数精确,pow幂运算

序列——列表和元组相关的:list和tuple
序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr

数据集合——字典和集合:dict,set,frozenset
数据集合:len,sorted,enumerate,all,any,zip,filter,map
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值