前言:本文为小编自主学习python的过程中的笔记和对应的练习应用 ,希望能帮助到大家,也希望大家能一起交流学习。

目录

一、for循环----迭代

1.迭代字典

2.一些迭代工具

3.反向迭代和排列后再迭代

4.简单推导

二、pass、del和exec

三、函数

1.定义函数

2.位置参数

3.默认参数

4.收集参数

5.作用域

6.内置函数的查看


一、for循环----迭代

1.迭代字典

要遍历字典的所有关键字,可像遍历序列那样使用普通的for语句,如:

d = {"x":1,"y":2,"z":3}
for key in d:
    print(key,"对应的值是",d[key])

也可以使用keys等字典方法来获取所有的键。如果只对值感兴趣,可用d.values。也可以用d.items以元组的方式返回键-值对。for循环的优点之一是,可在其中使用序列解包。如:

d = {"x":1,"y":2,"z":3}
for key,value in d.items():
    print(key,"对应的值是",value)

2.一些迭代工具

  • zip函数:可将两个序列“缝合”起来,并返回一个由元组组成的序列。返回值是一个适合迭代的对象,要查看其内容,可用list将其转换为列表。且“缝合”后可在循环中将元组解包。如:
a = ['a','b','c']
b = [1,2,3]
c = list(zip(a,b))
print(c)
for a,b in zip(a,b):
    print(a,"对应",b)
  • 迭代时获取索引

例如你想替换一个字符串列表中所有包含子串'xxx'的字符串

strings = ["mane","2xxx","da"]
index = 0
for string in strings:
    if 'xxx' in string:
        strings[index] = '[censored]'
    index +=1
print(strings)

当然也有另外的方法,那就是使用内置函数enumerate

strings = ["mane","xxx","da"]
for index,string in enumerate(strings):
    if 'xxx' in string:
        strings[index] = '[censored]'
print(strings)

这个函数让你能够迭代索引-值对,其中的索引是自动提供的。

3.反向迭代和排列后再迭代

函数:reversed和sorted。它们类似于列表方法reverse和sort,但可用于任何序列或可迭代的对象,且不就地修改对象,而是返回反转和排序后的版本。

print(sorted([4,3,6,8,3]))
print(sorted('hello,world!'))
print(list(reversed('hello,world')))
print(''.join(reversed('hello,world')))

注意:sorted返回一个列表,而reversed像zip那样返回一个更神秘的可迭代对象,只管在for循环或join等方法中使用它,不会有任何问题。只是不能对它执行索引或切片操作,也不能直接对它调用列表方法。要执行这些操作,可先使用list对返回的对象进行转换。

4.简单推导


列表推导是一种从其他列表创建列表的方式,类似于数学中的集合推导。列表推导的工作原


理非常简单,有点类似于for循环。如:

a = [x * x for x in range(10)]
print(a)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]



这个列表由 range(10) 内每个值的平方组成,如果只想打印那些能被3整除的平方值,可在列表推导中添加一条if语句。

a = [x*x for x in range(10) if x%3 == 0]
print(a)
# [0, 9, 36, 81]

注:这里选择用x%3==0而不直接用(x*x)%3==0是因为仅当x能被3整除时,x*x才能被3整除,因此我们可以讲代码简化



我们还可添加更多的 for 部分。例如:

print([(x, y) for x in range(3) for y in range(3)])
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)])

作为对比,下面的两个for循环可创建同样的列表 :

result = []
for x in range(3):
    for y in range(3):
        result.append((x, y))
print(result)

二、pass、del和exec



  • pass

在你编写代码时,可将其用作占位符。例如,你可能编写了一条 if 语句并想尝试运行它,但其中缺少一个代码块,而导致这些代码不能运行,这是因为在Python中代码块不能为空。要修复这个问题,只需在中间的代码块中添加一条pass语句即可。

a = input("请输入1或2:")
if a == '1':
    print('1')
elif a == '2':
    pass

在这里就是当你输入1就会打印1,当你输入2则什么都没有发生。

  • del

使用del语句。不仅会删除到对象的引用,还会删除名称本身。

x = ["Hello", "world"]
y = x
y[1] = "Python"
del x
print(y)
print(x)



注意:在这里x和 y虽然 指向同一个列表,但删除 x 对 y 没有任何影响,因为只是删除名称 x ,而 没有删除列表本身(值)。事实上,在Python 中,根本就没有办法删除值,而且你也不需要这样做,因为对于你不再使用的值,Python 解释器会立即将其删除。



  • exec



函数 exec 用于将字符串作为 Python 程序执行。如:

exec("print('Hello, world!')")



eval是一个类似于 exec 的内置函数。 exec 执行一系列 Python 语句,而 eval 计算用字符串表示



的 Python 表达式的值,并返回结果( exec 什么都不返回,因为它本身是条语句)。例如,你可使



用如下代码来创建一个 Python 计算器:

a = eval(input("Enter an arithmetic expression: "))
print(a)

三、函数

1.定义函数

def用于定义函数,语法格式:def 函数名():

也可以用:函数名 = lambda 参数:返回值 来定义函数

如编写一个函数,返回一个由斐波那契数组成的列表,且可以自己选择列表中值的个数

def fibs(num):
    result = [0, 1]
    for i in range(num-2):
        result.append(result[-2] + result[-1])
    return result
print(fibs(10))

2.位置参数

def 函数名(形参):

在调用函数时需要在对应的形参位置写上你调用时的实际参数,你在定义的时候给了几个参数,那么你在调用的时候就给几个,调用的时候按照参数位置顺序依次赋予值,位置一一对应。如:

def reduce(a,b):
    print(a-b) 

reduce(3,4) #-1


3.默认参数

你可以为某个参数指定一个默认值,你如果调用的时候不给值就会使用默认值 ;如果调用的时候传了参数,那么这个参数就会覆盖掉默认值 

def reduce(a,b=10):
    print(a-b) 

reduce(10,20) # -10
reduce(10) # 0

4.收集参数

*args  参数前面的星号将提供的所有值都放在一个元组中,也就是将这些值收集起来

def reduce(*args):  # args就是一个形参
    print(args)

reduce(1,2,3,4,5)


与赋值时一样,带星号的参数也可放在其他位置(而不是最后),但不同的是,在这种情况


下你需要做些额外的工作:使用名称来指定后续参数。如:

def fun(x, *y, z):
    print(x, y, z)  
fun(1, 2, 3, 4, 5, z=7)


当你要收集关键字参数时,可使用两个星号。如:

def reduce(**kwargs): 
    print(kwargs)
reduce(a=1,b=2,c=3) # 键和值

这时得到的是一个字典而不是元组

5.作用域


在函数内使用的变量称为局部变量(与之相对的是全局变量)。参数类似于局部变量,因此参数与全局变量同名不会有任何问题。如:

x = 1
def fun():
    x = 1 
    x = x + 1 
    print(x)
fun()
print(x)


在函数内部给变量赋值时,该变量默认为局部变量,除非你明确地告诉Python它是全局变量


函数global:用于声明全局变量,重新关联全局变量(使其指向新值)。如:

x = 1
def change_global():
    global x
    x = x + 1 
change_global()
print(x)

6.内置函数的查看

import builtins
print(dir(builtins)) # 查看你当前内置函数