'''
1)基本结构
[表达式 for 变量 in 序列]
产生一个新的列表,列表中的元素就是每次循环对应的表达式结果
'''
list1 = [ 10 for x in range ( 3 ) ]
print ( list1)
list2 = [ 2 * x for x in range ( 1 , 4 ) ]
print ( list2)
list3 = [ 'str' + str ( x* 3 ) for x in range ( 0 , 34 ) ]
print ( list3)
'''
2)条件结构
[表达式 for 变量 in 序列 if 条件语句]
'''
list4 = [ 'str' + str ( x) for x in range ( 1 , 100 ) if x == 1 or x % 3 == 0 ]
print ( list4)
list5 = [ 'str1' if x == 0 else f'str{x}' for x in range ( 0 , 100 , 3 ) ]
print ( list5)
dic = { 'a' : 10 , 'b' : 20 , 'c' : 30 }
dic = { dic[ x] : x for x in dic}
print ( dic)
dic4 = { 'a' : 10 , 'b' : 20 , 'c' : 30 , 'd' : [ 10 , 20 ] }
dic4 = dict ( ( x, dic4[ x] ) if type ( dic4[ x] ) in ( list , set , dict , tuple ) else ( dic4[ x] , x) for x in dic4)
print ( dic4)
'''
a.什么是函数
函数就是对实现某一特定功能的代码的封装。(机器)
b.函数的分类(谁定义的函数)
系统函数:python已经定义好,程序员可以直接使用的函数。例如:print、input、type、chr、ord、id、max、min、sum、sored等(别人已经造好的机器)
自定义函数:由程序员自己定义,程序员可以自己使用或者给别人使用的函数。(自己造机器)
'''
"""
语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
1)def - 关键字;固定写法
2)函数名 - 程序员自己命名;
要求:标识符、不能是关键字
规范:字母小写,单词之间用_隔开;
见名知意(看到函数名大概知道函数的功能);
不使用系统的函数名、类型名和模块名
3)(): - 固定写法(不能省略)
4)形参列表 - 以'变量名1,变量名2,变量3,...'的形式存在;
形参的作用是将函数外部的数据传递到函数里面(如果实现函数的功能需要提供外部数据,那么这个函数就需要形参)
5)函数说明文档 - 函数的说明书;本质就是用""" """引起来的注释(#和'''不会有提示)
6)函数体 - 和def保持一个缩进的一条或者多条语句(至少一条);
实现函数功能的代码段
(重点)注意:定义函数的时候不会执行函数体
"""
def sum1 ( num1, num2) :
print ( num1 + num2)
sum1( 10 , 35 )
def factorial ( num) :
s = 1
for x in range ( 1 , num+ 1 ) :
s *= x
print ( f'{num}的阶乘是:{s}' )
def he_bin ( str1, str2) :
len1 = len ( str1)
len2 = len ( str2)
new_str = ''
for index in range ( min ( len1, len2) ) :
new_str += str1[ index] + str2[ index]
if len1 > len2:
new_str += str1[ len2: ]
else :
new_str += str2[ len1: ]
print ( new_str)
he_bin( 'asdhkj' , '1234' )
"""
语法:
函数名(实参列表)
说明:
函数名 - 需要使用的已经定义好的函数的函数名
() - 固定写法
实参列表 - 以'数据1,数据2,数据3,...' 的形式存在;
实参就是需要从函数外部传递到函数内部使用的具体的数据
"""
"""
1)位置参数
以'数据1, 数据2, 数据3,...'形式存在,让实参和形参一一对应
2)关键字参数
以'形参1=实参1,形参2=实参2,...'形式存在,这个参数的位置可以随意更改
3)位置参数和关键字参数混用
位置参数必须在关键字参数的前面
"""
"""
定义函数的时候可以给一个或者多个形参赋默认值;有默认值的参数在调用的时候可以不传参。
"""
"""
定义函数的时候如果参数个数不确定,可以使用不定长参数
1)带*的不定长参数
在形参的前面加一个*让这个形参变成不定长参数,可以同时接受多个实参。这个参数的本质就是一个元组,传递的对应的实参全部会变成这个元组中的元素。(必须使用位置参数传参)
2)带**的不定长参数
在形参的前面加**让这个形参变成不定长参数,可以同时接受多个实参。这个参数的本质就是一个字典(必须使用关键字参数传参,关键字自己随意命名)
"""