函数传参

python中,函数传递参数本质上是一种赋值操作

def func(arr)
    arr = 1
    print(arr)
a=2
func(a)
print(a)
  1. 首先有两个变量arr和a,有两个对象1和2
  2. a绑定2,func(a)将a绑定的对象2贴上arr标签
  3. 这时,对象1尚未创建,2贴上a标签和arr标签
  4. $arr=1$操作将2上arr标签撕下,创建对象1并贴上arr标签
  5. 输出结果
    1
    2

输入输出

print()函数

>>>print("字符串")
字符串
>>>print("str1","str2","str3")
str1 str2 str3#空格取代逗号
print(a+b**c)#会先计算数值再输出
print(sum(a,b/c))#优先执行sum()函数

==原型==
$$print(self,*args,sep=' ',end='\n',file=None)$$

  • sep参数:分隔符,多个输出结果(返回值)之间的分隔符,默认为space,可以手动设置
  • end参数:打印后结束方式,默认为$\n$换行,可设置为' '则不换行

input()函数

获得用户输入,并保存为一个==字符串==
如果输入的是数字可通过int()将对象转换为数字

>>>age=input("Please input your age:")
Please input your age:18
>>>print(age)
'18'#type(age)==<class'str'>
>>>age=int(age)
>>>print(age)
18
  • $input()$可以传入一个字符串,会被打印以提示输入
  • 使用$int()$时,如果两边有多余的空格可以用$strip()$方法去除,保存字符串对象时也是如此
  • $input()$可用于吃掉回车,暂停程序运行
    [[数据类型及运算符#字符串格式化]]

工具函数

id()

示例
[[数据类型及运算符#赋值方式]]
id(变量名)得到变量绑定对象的内存地址
变量绑定的对象改变,查询结果改变,原对象内存地址不变

type()

  • 一个参数时返回对象的类型
  • 三个参数返回新的对象类型
    • type(name,bases,dict)
    • name -- 类的名称。
    • bases -- 基类的元组。
    • dict -- 字典,类内定义的命名空间变量。
      # 一个参数实例 
      >>> type(1)
      <type 'int'>
      >>> type('runoob')
      <type 'str'>
      >>> type([2])
      <type 'list'>
      >>> type({0:'zero'})
      <type 'dict'>
      >>> x = 1
      >>> type( x ) == int # 判断类型是否相等 
      True
      # 三个参数
      >>> class X(object):
      ... a = 1 
      ...
      >>> X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X
      >>> X
      <class '__main__.X'>

      next()

      [[基础数据结构#迭代器对象]]

      字符串函数

字符串对象自带函数

  1. 去除首尾空格或字符$lstrip()$,$rstrip()$,$strip()$
    
    str="    人生苦短,我用Python。    "
    print(str.lstrip())#去除左边空格并输出
    print(str.rstrip())#去除右边空格并输出
    print(str.strip())#去除左右空格并输出

str_1='333与君相别离,不知何日是归期,我如朝露转瞬晞。333'
print(str_1.strip('3'))#左右删去所有字符3后输出

==需要注意,该函数本质上是截取字符串的一部分,而非修改原对象==
$lstrip()$将返回返回截掉字符串左边的空格或指定字符后生成的**新字符串**。
```python
str="    人生苦短,我用Python。    "
str.lstrip()#仅仅调用函数不赋值也不输出
print(str)
'''
此时输出结果仍为
    人生苦短,我用Python。    
左右均带空格
说明对象未改变
'''
  1. 判断字符串是否以某字符串开头/结尾$startswith()$,$endswith()$
    是返回True,否返回False

    str="山有木兮木有枝,心悦君兮君不知。"
    print(str.starswith("山"))#返回True并输出
    print(str.endswith('不知'))#没有'。'返回False并输出
  2. 格式化字符串$$f"字符串内容{其他字符串变量名}字符串内容"$$
    返回格式化后字符串
    [待填坑]()

  3. 分割字符串$split()$
    以某字符分割字符串为几个字串,子串中不包括分割符,返回字符串列表

    str='根,紧握在地下,叶,相触在云里,每一阵风过,我们都互相致意。'
    strP=str.split(',')#注意中英文标点
    print(str)#输出原字符串对象
    print(strP)#输出分割得到的字符串列表
    print(strP[1])#输出"紧握在地下"

数值处理函数

  1. 绝对值
    $$abs()$$
  2. 取整
    $$int()$$
  3. 四舍五入(返回整数)
    $$round()$$
  4. 判断大小、真假(布尔函数)
    $$bool()$$
    [[数据类型及运算符#布尔值与空值]]

数据类型转换函数

  1. $$int(x [,base])$$
    x为原对象,base为可选参数,默认为10表示十进制
  2. $$float(x)$$
  3. $$complex(real[,imag])$$
    real为实部,imag为可选的虚部参数
  4. $$str(x)$$
  5. $$repr(x)$$
    将对象x转化为表达式字符串(python解释器能够读取的形式)
  6. $$chr(x)$$
    将一个整数转换为一个字符
  7. $$ord(x)$$
    将一个字符转换为它的整数值
  8. $$hex(x)$$
    将一个整数x转换为其十六进制形式的字符串
  9. $$oct(x)$$
    将一个整数x转换为其八进制形式==字符串==
  10. $$eval(str)$$
    用来计算在字符串中的有效Python表达式,并返回一个对象
  11. $$tuple(s)$$
    将序列s转化为元组返回
  12. $$list(s)$$
  13. $$set(s)$$
    将序列s转换为可变集合
  14. $$frozenset(s)$$
    将序列s转换为不可变集合
  15. $$dict(d)$$
    将(key,value)形式元组序列d转换为一个dict

数据类型高低之分

  1. "较高数据类型"和"较低数据类型"是在==隐式类型转换==中用于描述数据精度的概念。

  2. ==精度==可以理解为数据类型能够表示的信息量或详细程度。在Python中,数据类型的"高"和"低"主要根据它们的精度来判断。

  3. 这里的"较高"数据类型指的是能够表示更多信息(或更精确信息)的数据类型,而"较低"的数据类型则表示的信息较少。
    具体来说,比如浮点数就比整数"高",因为浮点数不仅可以表示整数,还可以表示小数。所以在你的例子中,整数就会被自动转换为浮点数,以保证信息不丢失。

  4. 再比如,复数(complex)就比浮点数(float)和整数(int)"高",因为复数可以表示实数和虚数,而浮点数和整数只能表示实数。所以在进行运算时,如果操作数包含复数,那么其他的浮点数或整数就会被转换为复数。

  5. 通常情况下,Python的数据类型的"高低"可以按照如下顺序理解:
    布尔(bool)< 整型(int) < 浮点型(float)< 复数(complex)。
    这个顺序主要根据数据类型可以表示的信息范围和精度来确定的。

不同数据类型之间能否随意转化

虽然Python提供了一些内置的函数来实现不同数据类型之间的转换,如$int(), float(), str(), list(), tuple(), set()$等等,但并非所有类型的数据都可以被转换成其他任意类型。转换是否可行,主要取决于数据本身是否包含足够的信息来表示目标类型

例如:
你可以轻松地将整数转换为字符串,因为每一个整数都有一个明确的字符串表示(例如,整数123可以表示为字符串"123")。

类似地,一个只包含数字字符的字符串(如"123")可以被转换为一个整数或浮点数,因为这个字符串中包含了足够的信息来表示一个数字。

然而:
对于一个非数字字符串(如"Hello"),它无法被转换为一个整数或浮点数,因为这个字符串并不包含任何可以表示一个数字的信息。

对于一个列表或元组,它可以被转换为一个集合(如果它的元素是不可变的),但不能被转换为一个整数,因为一个集合或列表中的元素无法合理地表示为一个单独的数字。

总的来说,数据类型的转换==并非无限制==,它取决于原始数据是否能够提供足够的信息来表示目标类型。当你在编程中进行类型转换时,需要注意这一点。

判断与循环语句

$if,elif,else$语句

if condition1:
    1条件成立时要执行操作
elif condition2:
    1不成立2成立时执行操作
else:
    1,2均不成立时执行操作

eg.

name=input('Who are you?')
age=input('How ord are you?')
if name=='朱冰倩'and age>=19:
    print('Daring,long time no see.')
elif name=='朱冰倩' and age==18:
    print('Thank you for being in my life.')
else:print('こんにちわ。')
  • 假值 :None、空列表、空集合、空字典,空元组、空字符串、0、False 等
  • 真值 :非空列表、非空集合、非空字典,非空元组、非空字符串、非 0 数值、True 等

    $for,break,continue$语句

    普通循环

    for x in 序列(list,dict,string,tuple等):
      执行代码块
  • for会依次将序列中元素提取出赋值给x

    带索引循环

  • 如果想在循环的时候,把索引也取出来,可以加一个 $enumerate()$ 函数。
  • $enumerate()$函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
    • Python 2.3. 以上版本可用,2.6添加 start 参数。
  • $$enumerate(sequence,[start=0])$$
    • sequence:可迭代对象
    • 可选参数start:下标起始位置值,默认为0
      galgames=['咖啡馆','千恋万花','天使骚骚']
      for index,galgame in enumerate(galgames,1):
      print(f'今天玩第{index}部作品{galgame}。')

      output
      今天玩第1部作品咖啡馆。
      今天玩第2部作品千恋万花。
      今天玩第3部作品天使骚骚。

      break

      中断当前循环,不同层级break中断不同循环

      continue

      continue停止执行后续代码进入下一循环

      for-else

  • for循环后接与for同级else,当for循环正常执行完时,会自动进入else;
  • 如果因为break中断循环(continue视为正常),则不会进入else分支

    while

    while 判断条件:
      执行语句

    在判断条件成立(True)时,循环执行语句;不成立,跳出循环
    ==避免死循环出现,检查执行语句能否保证打破循环条件or触发break==

    while-else

    同for-else,当不通过break跳出while循环时,执行后面的else分支;否则异常退出不执行else

Last modification:November 19, 2023
我很可爱,请给我钱。