if listening port changes every time the wallet opened, how would others know it and connect
every time you start your "node" nobody knows you yet to connect to you, so you first have to announce your existence to the rest of the world you do that by sending them a message over the P2P network to the nodes that you know of (you might have connected to them previously or get the list from seed nodes or have them hardcoded in your node software). the message is called "Version message". inside that you include all the required information about yourself including the blockchain height you have, relay option, protocol version you support,... and your IP and Port. you can change your port here to anything else and others can connect.
8333 is what we agreed on to all be on a same standard port but it is not enforced.
now that you've sent them your Version Message, they store it and send it to others too. so other nodes now know you are on IP:X and Port:Y and can find it that way.
here are 3 nodes with other ports (the numbers in link after the dash is their port):
https://bitnodes.earn.com/nodes/149.28.134.80-56792/
https://bitnodes.earn.com/nodes/54.199.214.32-48333/
https://bitnodes.earn.com/nodes/47.244.126.66-8999/
getpeerinfo for the last one for example will return 47.244.126.66:8999 while this is a bitcoin node it has 8999 as its port.