python基础系列教程(1)——python基础语法全解


1.逻辑运算


1.1 算数运算符

运算符描述实例
+,-,*,/加,减,乘,除不做补充
//取整数返回除法的整数部分 9//2=4
%取余数9%2=1
**2**3=8

1.2 比较运算符

比较符描述
== , !=检查两边的变量是否相等,是就返回1,否就返回0
>, <左边是否大于,小于右边,是就返回1,否就返回0
>=,<=左边是否大于等于,小于等于右边,是就返回1,否就返回0

输入

print(2==2)
print(2==1)
print('A'=='a')
print(2!=2)
print(2!=1)
print('A'!='a')

输出

True
False
False
False
True
True

1.3 逻辑运算

  • and 与/且

格式:

条件1 and 条件2
情况结果
两个同时满足返回True
有一个不满足返回False
都不满足返回False
  • or 或

格式:

条件1 or 条件2
情况结果
两个同时满足返回True
有一个不满足返回True
都不满足返回False
  • not 非
    格式:
not 条件
情况结果
条件成立返回False
条件不成立返回True

逻辑运算演练:

# 输入数学和语文成绩,要求只要有一门成绩 > 60 分就算合格
yuwen_score = int(input('输入语文成绩:'))
math_score = int(input('输入数学成绩:'))

if yuwen_score > 60 or math_score > 60:
    print("考试通过")
else:
    print("再接再厉!")

1.4 赋值运算

运算符描述
+=,-=,*=,、=c += a 等效于 c = c + a
//=c //= a 等效于 c = c // a
**=c ** = a 等效于 c = c ** a

1.5. 随机数处理

先导入随机数模块

import random
  • 导入模块后,可以直接在 模块名称 后面敲一个 . 然后按 Tab 键,会提示该模块中包含的所有函数

举例:

random.randint(12, 20)  # 生成的随机数n: 12 <= n <= 20   
random.randint(20, 20)  # 结果永远是 20   
random.randint(20, 10)  # 该语句是错误的,下限必须小于上限

2.条件语句


2.1 if、elif、else 判断语句

格式:

if 要判断的条件:
	成立的话要执行的语句
elif 要判断的条件:
	成立的话要执行的语句
else :
	不满足以上条件时要执行的语句

输入:

age = int(input('请输入您的年龄:'))
if age>18:
    print('大于18岁,成年,可以进网吧')
elif age==18:
    print('等于18岁,成年,可以进网吧')
else:
    print('不准进网吧')

输出:

请输入您的年龄:1
不准进网吧
  • if 嵌套练习
'''1.定义布尔型变量  has_ticket  表示是否有车票
2.定义整型变量  knife_length  表示刀的长度,单位:厘米
3.首先检查是否有车票,如果有,才允许进行 安检
4.安检时,需要检查刀的长度,判断是否超过 20 厘米◦如果超过 20 厘米,提示刀的长度,不允许上车
◦如果不超过 20 厘米,安检通过
5.如果没有车票,不允许进门'''

has_ticket =int(input('是否有车票?有填1没有填0:'))
if has_ticket== 1 :
    print('有车票,允许通行')
    knife_lenth = int(input('刀长度,单位:cm:'))
    if knife_lenth >= 20:
        print('刀长为 %d 不允许携带' % knife_lenth)
    else :
        print('安全通过')

else:
    print('没票不允许通行')


2.2.while 循环语句

用法:

while 条件(判断 变量是否满足条件):
	条件1满足,做事情1
	条件2满足,做事情2
	......

输入:

i=1
while i<=5:
    print('这是第 %d 次输出' % i)
    i+=1

输出:

这是第 1 次输出
这是第 2 次输出
这是第 3 次输出
这是第 4 次输出
这是第 5 次输出
  • while循环练习
'''
输出
*
**
***
****
*****
'''
i=1
while i<=5:
    print('*'*i)
    i+=1
'''
输出
*
**
***
****
*****
假设  Python  没有提供 字符串的  *  操作 拼接字符串
'''
i=1
while i<=5:
    j=1
    while j<=i:
        print('*',end='')
        j+=1
    print()
    i+=1

2.3 break,continue退出循环

  • break 某一条件满足时,不再执行循环体中后续重复的代码,并退出循环
  • continue 某一条件满足时,不再执行本次循环体中后续重复的代码,但进入下一次循环判断

输入

#break
i=1
sum=0
while i<=100:
    sum=i+sum
    i+=1
    if i == 50:
        break
print(sum)
#输出结果为1225
#continue
i=1
sum=0
while i<=100:
    sum=i+sum
    if i == 50:
        i += 1
        print(i)
        continue
    i+=1
print(sum)
#结果是 51 5050

2.4 for循环

for 变量 in 条件:
	如果为真就进行的操作
for i in range(1,5):
    print(i,end='')
    i+=1

输出:
1234
'''
一个学校,有3个办公室,现在有7位老师等待工位的分配,请编写程序,完成随机的分配,假设每个教室可以容纳任意数量的教师
'''
import random

list1=[[],[],[]]
teacher=['a','b','c','d','e','f','g']

for i in teacher:
    index=random.randint(0,2)
    list1[index].append(i)

print(list1)

输出:
[['e'], ['a', 'b', 'd'], ['c', 'f', 'g']]

3. 变量类型


3.1 列表

3.1.1列表定义

列表(list) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组

  • 列表专门用于存储 一串 信息
  • 列表用 [] 定义,数据 之间使用 , 分隔
  • 列表的索引从0开始
    • 索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标
list=[1,2,3,'haha']
print(list)
print(list[2])
print(type(list))

输出:
[1, 2, 3, 'haha']
3
<class 'list'>
3.1.2 列表常见操作-增加

a.增加元素

  • 列表.insert(索引, 数据):在指定位置插入一个值
list=[1,2,3,'haha']
print(list)
list.insert(0,'zz')
print(list)

输出:
[1, 2, 3, 'haha']
['zz', 1, 2, 3, 'haha']
  • 列表.append(数据):在末尾追加一个值,这个最常用
list=[1,2,3,'haha']
print(list)
list.append('zz')
print(list)

输出:
[1, 2, 3, 'haha']
[1, 2, 3, 'haha', 'zz']
  • 列表.extend(Iterable):将另一个列表(也可以)的全部内容追加到末尾
list1=[1,2,3,'haha']
list2=[4,5,6,'zz']
print(list1)
list1.extend(list2)
print(list1)

输出:
[1, 2, 3, 'haha']
[1, 2, 3, 'haha', 4, 5, 6, 'zz']
  • append 和extend的差别
    使用 append 追加的是将后面的列表作为一个整体追加到最后了,而使用 extend 追加的是将里面的元素依次追加到最后。
list1=[1,2,3,'haha']
list2=[4,5,6,'zz']
print(list1)
list1.extend(list2)
print(list1)
list1.append(list2)
print(list1)

输出:
[1, 2, 3, 'haha']
[1, 2, 3, 'haha', 4, 5, 6, 'zz']
[1, 2, 3, 'haha', 4, 5, 6, 'zz', [4, 5, 6, 'zz']]
3.1.3 列表常见操作-删除
  • del 列表[索引]:删除指定索引元素
list1=[1,2,3,'haha']
del list1[0]
print(list1)

输出:
[2, 3, 'haha']
  • 列表.remove(数据):直接删除列表里面的值,不需要知道位置。如果有多个值,只删除第一个
list1=[1,2,3,'haha',1]
list1.remove(1)
print(list1)

输出:
[2, 3, 'haha', 1]
  • 列表.pop():可指定索引删除,不指定会删除最后一个
list1=[1,2,3,'haha',1]
list1.pop(1)
print(list1)

输出:
[1, 3, 'haha', 1]
  • 列表.clear:清空列表
list1=[1,2,3,'haha',1]
list1.clear()
print(list1)

输出:
[]
3.1.4 列表常见操作-修改
  • 直接指定索引赋值,就是修改元素内容
list1=[1,2,3,'haha',1]
list1[1]='zz'
print(list1)

输出:
[1, 'zz', 3, 'haha', 1]
3.1.5 列表常见操作-查询
  • 列表[索引]:根据索引获取(查询)值
list1=[1,2,3,'haha',1]
print(list1[0])

输出:
1
  • 列表.index(数据):查询给定值的索引,即想要知道元素的位置,如果查询元素有多个相同值只会返回第一个值出现的记录
list1=[1,2,3,'haha',1]
print(list1.index(1))

输出:
0
  • 列表.count(数据):查询值出现的次数
list1=[1,2,3,'haha',1]
print(list1.count(1))

输出:
2
  • len(列表):有多少个元素
list1=[1,2,3,'haha',1]
print(len(list1))

输出:
5
  • if 数据 in 列表:判断元素是否在列表中,用作条件语句中
list1=[1,2,3,'haha',1]
if 1 in list1:
    print('包含1')
else:
    print('不包含1')

输出:
包含1
3.1.6 列表元素的排序

注意数字和字符串不能一起排序,会报错
sort()升序
sort(reverse=True)降序

list1=[1,2,3,2,1]
list1.sort()
print(list1)
list1.sort(reverse=True)
print(list1)

输出:
[1, 1, 2, 2, 3]
[3, 2, 2, 1, 1]
  • sort 方法还有一个参数,key,这个参数是传递函数方法名的,可以传入自定义的函数名或者是匿名函数
list=[5,7,9,0,4,'8']
#这里是使用 int 函数,意思是将里面可以转换为数字的字符串转换成数字来排序,如果转换不成功会报错,如‘8d’ 显示是不能转换为数字类型的
list.sort(key=int,reverse=True)
print(list)

输出:
[9, '8', 7, 5, 4, 0]

3.2 元祖

3.2.1元祖的定义
  • Tuple(元组)与列表类似一个用 [] 一个用 () 定义,不同之处在于元组的元素不能修改
  • 元组的索引从0开始
info_tuple = ("zhangsan", 18, 1.75)
3.2.1元祖的常见操作-查询
  • 因为元组具有的不可修改的特性,所以没有 增加、删除、修改 的方法,只有查询功能
tuple=(1,2,'a',3)
print(tuple[2])

输出:
a
  • 但是,如果元组中的元素如果为列表/字典时,则可以修改列表/字典中的元素的值
a = [1, 2]
b = (a, 3)
print(b)
a.append(3)
print(b)

输出:
([1, 2], 3) 
([1, 2, 3], 3)
  • 元组中 只包含一个元素 时,需要 在元素后面添加逗号,不加就不是元组了
info_tuple = (50, )
print(type(info_tuple))

输出:
<class 'tuple'>
  • count(),index(),len均可以在元祖中使用
3.2.1元祖和列表的转换
  • 使用 list 函数可以把元组转换成列表
list(元组)
  • 使用 tuple 函数可以把列表转换成元组
tuple(列表)

3.3字典

3.3.1字典的定义
  • 字典用 {key:value,…} 定义
  • 字典使用键值对(key、value对)存储数据,键值对之间使用,分隔◦键 key 是索引:注意索引不再是 0,1,2… 了,虽然可以用数字,但是一般使用字符串
  • 值 value 是数据
  • 键 和 值 之间使用 : 分隔
  • 键必须是唯一的:如果有多个,后者会覆盖前者
  • 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
xiaoming = {"name": "小明",
            "age": 18,
            "gender": True,
            "height": 1.75}
3.3.2字典的常见操作-增加
dict={'name':'zz','age':18}
print(dict)
#这里 weight 的键值对不存在就是新增,如果存在就是修改(后面有)
dict['weight']=100
print(dict)

输出:
{'name': 'zz', 'age': 18} {'name': 'frog', 'age': 18, 'weight': 100}
3.3.3 字典的常见操作-删除
  • del 字典[键]
dict={
    'name':'zz',
    'age':18
}
print(dict)
#如果要删除的键不存在,会报错 KeyError: 'age1'
del dict['age']
print(dict)

输出
{'name': 'zz', 'age': 18}
{'name': 'zz'}
  • 字典.pop(键)
dict={
    'name':'zz',
    'age':18
}
print(dict)
# 如果要删除的键不存在,会报错 KeyError: 'age1'
# 注意:pop 删除成功了会返回被删除的值
dict.pop('age')
print(dict)

输出:
{'name': 'zz', 'age': 18}
{'name': 'zz'}
  • 字典.clear 删除整个字典里的值
dict={
    'name':'zz',
    'age':18
}
print(dict)
dict.clear()
print(dict)

输出:
{'name': 'zz', 'age': 18}
{}
3.3.4 字典的常见操作-修改
  • 字典[键] = 数据
dict={
    'name':'zz',
    'age':18
}
print(dict)
dict['age']=20.1
print(dict)

输出:
{'name': 'zz', 'age': 18}
{'name': 'zz', 'age': 20.1}
  • 字典.setdefault(键,数据)
dict={
    'name':'zz',
    'age':18
}
print(dict)
#如果存在就不做处理
dict.setdefault('sex','girl')
print(dict)

输出:
{'name': 'zz', 'age': 18}
{'name': 'zz', 'age': 18, 'sex': 'girl'}
  • 字典.update(字典2)
dict={
    'name':'zz',
    'age':18
}
print(dict)
dict.update({'weight':100,'age':20.1})
print(dict)

输出:
{'name': 'zz', 'age': 18}
{'name': 'zz', 'age': 20.1, 'weight': 100}
3.3.5 字典的常见操作-查询
  • 字典[键]:注意不能根据值来查询键
dict={
    'name':'zz',
    'age':18,
    'weight':100
}
print(dict['weight'])

输出:
100
  • 字典.get(键)
dict={
    'name':'zz',
    'age':18,
    'weight':100
}
print(dict.get('name'))
# 键不存在不会报错,而是会返回 None
print(dict.get('nname'))
# 键不存在会返回后面设置的 默认值,可以根据返回的值来判断有没有获取成功
print(dict.get('nname','无'))
输出:
zz
None
无
3.3.6 字典的常见操作-遍历
  • 字典.keys() 得到字典的 键
  • 字典.values() 得到字典的 值
  • 字典.items() 得到键值对,返回为元组
dict={
    'name':'zz',
    'age':18,
    'weight':100
}
print(dict.keys())
print(dict.values())
print(dict.items())
#注意上面三个都是视图对象的类型,可以使用 for 遍历,也可以转换为 list ,当然我们一般只需要遍历即可
print(list(dict.items()))

输出:
dict_keys(['name', 'age', 'weight'])
dict_values(['zz', 18, 100])
dict_items([('name', 'zz'), ('age', 18), ('weight', 100)])
[('name', 'zz'), ('age', 18), ('weight', 100)]
for i in dict.keys():
    print(i,end=' ')
print('遍历键')
for j in dict.values():
    print(j,end=' ')
print('遍历值')
# 对返回的元组遍历,然后解包获得 key、value
for i,j in dict.items():
    print(i)
    print(j)

输出:
name age weight 遍历键
zz 18 100 遍历值
name
zz
age
18
weight
100

3.4 字符串

3.4.1 字符串的定义
  • 字符串 就是 一串字符,是编程语言中表示文本的数据类型
  • 在 Python 中可以使用一对双引号"或者一对单引号’定义一个字符串
    ◾可以在前面加r,代表后面的不做转义字符输出
    ◾ 可以使用\"或者\'做字符串的转义
    ◾如果字符串内部需要使用 " ,可以使用 ’ 定义字符串
    ◾如果字符串内部需要使用 ’ ,可以使用 " 定义字符串
  • 使用 索引 获取一个字符串中 指定位置的字符,索引计数从 0 开始
  • 可以使用 for 循环遍历 字符串中每一个字符
string = "zzz"
for c in string:
    print(c)
输出:
z
z
z
3.4.2 字符串的常用操作-查询和替换
string = "hellozzz"
#根据索引查询值
print(string[0])
#根据值查询索引
print(string.index('z'))
#根据值查出现次数
print(string.count('z'))
#查询值的元素数量
print(len(string))

输出
h
5
3
8
方法说明
string.find(str, start=0, end=len(string))检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1
string.rfind(str, start=0, end=len(string))类似于 find(),不过是从右边开始查找
string.index(str, start=0, end=len(string))跟 find() 方法类似,不过如果 str 不在 string 会报错
string.rindex(str, start=0, end=len(string))类似于 index(),不过是从右边开始
string.replace(old_str, new_str, num=string.count(old))返回一个新字符串,把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次
3.4.3 字符串的常用操作-判断
方法说明
string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True
string.isdecimal()如果 string 只包含数字则返回 True
string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True
string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True
string.startswith(str)检查字符串是否是以 str 开头,是则返回 True
string.startswith(str)检查字符串是否是以 str 开头,是则返回 True
string.endswith(str)检查字符串是否是以 str 结束,是则返回 True
3.4.4 字符串的常用操作-拆分连接
方法说明
string.partition(str)返回元组,把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面)
string.rpartition(str)类似于 partition() 方法,不过是从右边开始查找
string.split(str="", num)返回列表,以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格
string.splitlines()返回列表,按照行(’\r’, ‘\n’, ‘\r\n’)分隔
string1 + string2拼接两个字符串
string.join(seq)返回字符串,以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
3.4.5 字符串的常用操作-大小写转换
方法说明
string.lower()返回新字符串,转换 string 中所有大写字符为小写
string.upper()返回新字符串,转换 string 中的小写字母为大写
3.4.6 字符串的常用操作-文本对齐
方法说明
string.ljust(width)返回新字符串,基于原字符串左对齐,并使用空格填充至长度 width
string.rjust(width)返回新字符串,基于原字符串右对齐,并使用空格填充至长度 width
string.center(width)返回新字符串,基于原字符串居中,并使用空格填充至长度 width
3.4.7 字符串的常用操作-去除空白符
方法说明
string.lstrip()返回新字符串,截掉 string 左边(开始)的空白字符
string.rstrip()返回新字符串,截掉 string 右边(末尾)的空白字符
string.strip()返回新字符串,截掉 string 左右两边的空白字符
3.4.8字符串的切片
  • 切片 译自英文单词 slice ,翻译成另一个解释更好理解: 一部分
  • 切片 使用 索引值 来限定范围,根据 步长 从原序列中 取出一部分 元素组成新序列
  • 切片 方法适用于 字符串、列表、元组
字符串[开始索引:结束索引:步长]
num_str = "0123456789"

# 1. 截取从 2 ~ 5 位置 的字符串
print(num_str[2:6])

# 2. 截取从 2 ~ `末尾` 的字符串
print(num_str[2:])

# 3. 截取从 `开始` ~ 5 位置 的字符串
print(num_str[:6])

# 4. 截取完整的字符串
print(num_str[:])

# 5. 从开始位置,每隔一个字符截取字符串
print(num_str[::2])

# 6. 从索引 1 开始,每隔一个取一个
print(num_str[1::2])

# 倒序切片
# -1 表示倒数第一个字符
print(num_str[-1])

# 7. 截取从 2 ~ `末尾 - 1` 的字符串
print(num_str[2:-1])

# 8. 截取字符串末尾两个字符
print(num_str[-2:])

# 9. 字符串的逆序(面试题)
print(num_str[::-1])

4.函数


4.1 函数基本使用

4.1.1 函数定义
def 函数名():

    函数封装的代码
    ……
  • 函数,就是把 具有独立功能的代码块 组织为一个整体,在需要的时候 调用

  • 函数的使用包含两个步骤:
    1.定义函数 —— 在函数中编写代码,实现功能
    2.调用函数 —— 执行编写的代码

  • 函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的 重用

4.1.2 函数的调用

通过 函数名() 即可完成对函数的调用

4.1.3 第一个函数演练
name = input('输入名字:')
def say_haha():
    print(name+'hhhh1')
    print(name + 'hhhh2')
    print(name + 'hhhh3')
say_haha()

输出:
输入名字:zz
zzhhhh1
zzhhhh2
zzhhhh3

4.2函数的参数

  • 在函数名的后面的小括号内部填写 参数
  • 多个参数之间使用 , 分隔
4.2.1参数作用
  • 函数的参数,增加函数的通用性,针对相同的数据处理逻辑,能够适应更多的数据
    1.在函数 内部,把参数当做 变量 使用,进行需要的数据处理
    2.函数调用时,按照函数定义的参数顺序,把 希望在函数内部处理的数据,通过参数 传递
4.2.2 形参实参
  • 形参:定义 函数时,小括号中的参数,是给真实数据占位用的,在函数内部 作为变量使用
  • 实参:调用 函数时,小括号中的参数,是传递到 函数内部 的 真实数据

形参作用域

a = 5  

def test1(a): 
    # 这里 a 是形参,是在函数内部定义的,作用域只在函数内部
    a += 1
    print("%d" % a)

test1(2)  
# 这里因为形参的作用域不到这里,所以这个 a 是外面的 a
print("%d" % a)
  • 形参的作用域(起作用的范围) 只在定义函数的代码块 中,一旦超出该范围就不存在了,如果强行使用该形参名,则使用的是 同名的自定义变量,如果此时外面没有a 就报错了
  • 因为形参的作用域只在本函数的内部,所以不同函数的形参可以是同名
  • 编程中应该尽量避免 函数的形参 和 同文件的变量名 同名
4.2.3 默认参数
  • 形参设定默认值 称为 默认参数
  • 调用函数时,如果没有传入默认参数对应的实参则实参使用默认值
  • 默认参数一定要位于参数列表的最后面
def func(name,age=18):
    print('name is %s' % name ,end=' ,')
    print('age is %s' % age)
func("zz")
func('zz',20)

输出:
name is zz ,age is 18
name is zz ,age is 20
4.2.4 关键字参数
  • 调用函数时,实参可以指定对应的形参,称为 关键字参数
  • 一旦给实参设置了关键字参数,则所有实参都要设置为关键字参数
def func(name,age):
    print('name is %s' % name ,end=' ,')
    print('age is %s' % age)
func(age=18,name="zz")
输出:
name is zz ,age is 18
4.2.5 元祖可变参数 args
  • 函数可以定义 可变参数,用于接收任意数量的参数
  • 可变参数的前边需要添加,用于提示python解释器该参数为可变参数*
  • 使用可变参数直接用args即可(不需要加*)
  • 可变参数的本质是 将传递的参数包装成了元组
def func(i,j,*args):
    sum=i+j
    for a in args:
        sum+=a
    print('和为 %s' % sum)
    
func(1,2,3,4,5)

输出:
和为15
4.2.6 字典可变参数 kwargs
  • 可以接收不存在的关键字参数
  • 定义参数时需要在变量名前添加两个*
  • 这种可变参数会将 不存在的关键字参数包装成字典
  • 字典可变参数必须放在形参最后面
def func(i,j,*args,**kwargs):
    sum=i+j
    for a in args:
        sum+=a
    print('和为 %s' % sum)
    print(kwargs)
func(1,2,3,4,5,a='你好',b=6)
输出:
{'a': '你好', 'b': 6}

4.3 函数的变量

4.3.1局部变量
  • 局部变量,就是在 函数内部定义的变量
  • 不同函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响
  • 局部变量的作用域只在函数内部
  • 局部变量的目的是 存储需要临时保存的数据
    以下两个函数都有a变量,因为是局部变量所以不互相影响
def test1():
    a = 10
    print("%d" % a)


def test2():
    a = 5
    print("%d" % a)

test1()
test2()
输出:
10
5
4.3.2 全局变量
  • 在函数外边定义的变量叫做 全局变量
  • 全局变量能够在所有的函数中进行访问
a = 100

def test1():
    print(a)

def test2():
    print(a)


# 调用函数
test1()
test2()

输出:
5
5
4.3.3函数内修改全局变量
  • 函数内赋值变量 时,默认为定义并赋值局部变量,赋值后获取的也是局部变量的值
  • 如果在函数中修改全局变量,那么就需要使用 global 进行声明,否则出错
a = 10

def test():
    global a
    a = 5  # 修改全局变量
    print("函数内a:%d" %a)

test()
print("函数外a:%d" %a)

输出:
函数内a:5
函数外a:5

4.4 函数的返回值

4.4.1 返回值
  • 在程序开发中,有时候,会希望 一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理
  • 返回值 是函数 完成工作后,最后 给调用者的 一个结果
  • 在函数中使用 return 关键字可以返回结果
  • 调用函数一方,可以 使用变量 来 接收 函数的返回结果,也可以不接收只调用。注意没有返回值,也有返回值,是 None
def sum_2_num(num1, num2):
    """对两个数字的求和"""

    return num1 + num2

# 调用函数,并使用 result 变量接收计算结果
result = sum_2_num(10, 20)

print("计算结果是 %d" % result)
4.4.2 多个返回值
def func2():
return 1, 1.5

a = func2()
print(a)

a, b = func2()
print(a)
print(b)

输出:
(1, 1.5)
1
1.5
4.4.3 return
  • return 后面可以不跟值
def func_sum():
    """求和 1+2"""
    sum_num = 1 + 2
    print(sum_num)
    return
  • 函数中代码执行到 return 时,会终止函数的执行,返回到函数调用的代码处。所以可以利用 return 结束程序
def func_sum():
    """求和 1+2"""
    sum_num = 1 + 2
    print(sum_num)

    return
    # 这行代码不会执行了
    print('不会执行这行代码')

res=func_sum()
print(res)
4.4.4 多个return
def is_even_num(num):
    """判断奇偶数"""
    if num % 2 == 0:
        return True
    else:
        return False
  • 一个函数中可以有多个return语句,但是只要有一个return语句被执行,那么这个函数就会结束

4.5 匿名函数lambda

4.5.1 定义
lambda [arg1 [,arg2,.....argn]]:expression

简单应用:

a= lambda i,j:i+j
print(a(1,2))
输出:
3
  • Lambda函数能接收任何数量的参数但只能返回一个表达式的值

  • 匿名函数不能直接调用print,因为lambda需要一个表达式

4.5.2使用场景

使用参数的匿名函数

  • 定义一个函数
def fun(a, b, opt):
     print("a = %s" % a)
     print("b = %s" % b)
     print("result =%s" % opt(a, b))

# 调用函数
fun(1, 2, lambda x,y:x+y)
输出:
a = 1 b = 2 result = 3
  • 将字典按照指定数据排序
stus = [
    {"name": "zhangsan", "age": 18}, 
    {"name": "lisi", "age": 19}, 
    {"name": "wangwu", "age": 17}
]
#按照name排序
stus.sort(key = lambda x: x['name'])
print(stus)
输出:
[{'age': 19, 'name': 'lisi'}, {'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}]
  • 快速构造列表
list2 =(lambda n:[i**2 for i in range(1,n+1)])(2)
print(list2)
输出
[1, 4]

5.模块使用


5.1 模块定义

  • 模块 就好比是 工具包,要想使用这个工具包中的工具,就需要 导入 import 这个模块
  • 每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块
  • 在模块中定义的 全局变量 、 函数 都是模块能够提供给外界直接使用的工具

1.新建 info.py,代码如下

name = "datafrog"
def func():
    print('info_func')

2.再新建 get_info.py 文件,并且编写以下代码:

import info
print(info.name)
info.func()

第一步是新建一个自定义的模块
第二步实现了模块的调用

5.2 自定义模块名称规范
  • 可以由 字母、下划线 和 数字 组成
  • 不能以数字开头
  • 不能与关键字重名

6.列表推导式


6.1基本方法

格式:

[计算式 for 循环]

输出固定步长的整数

a=[x for x in range(4)]
b=[x for x in range(1,7)]
c=[x for x in range(1,7,2)]

print(a)
print(b)
print(c)

输出:
[0, 1, 2, 3]
[1, 2, 3, 4, 5, 6]
[1, 3, 5]

6.2 for+if的使用

a=[x for x in range(1,7) if x%2==0]
b=[x for x in range(1,7) if x%2!=0]
c=[x for x in range(1,7,2)]

print(a)
print(b)
print(c)
输出:
[2, 4, 6] [1, 3, 5] [1, 3, 5]

6.3 生成二维列表

a=[(x,y) for x in range(1,4) for y in range(3,6)]
print(a)
输出
[(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 3), (3, 4), (3, 5)]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值